Командная строка ActiveMQ: публиковать сообщения в очередь из файла? - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть приложение, использующее ActiveMQ, и обычно я тестирую его с помощью веб-интерфейса AMQ для отправки сообщений в очереди, из которых потребляется мое программное обеспечение.

Я бы хотел полуавтоматизировать это и надеялся, что командная строка AMQ сможет отправить сообщение в определенную очередь, предоставив это сообщение в виде текста при вызове команды или, в идеале, считав его из файла. .

Примеры:

./activemq-send queue="my-queue" messageFile="~/someMessage.xml"

или

./activemq-send queue="my-queue" message="<someXml>...</someXml>"

Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Вы можете использовать "A" утилиту , чтобы сделать это.

a -b tcp://somebroker:61616 -p @someMessage.xml my-queue

Отказ от ответственности: я автор A, написал его один разсделать только эту вещь.Есть и другие способы, такие как интерфейс REST, скрипт Groovy и еще много чего.

0 голосов
/ 16 ноября 2018

ActiveMQ имеет интерфейс REST, в который вы можете отправлять сообщения из командной строки, используя, например, утилиту curl.

Вот сценарий, который я написал и использую для этой цели:

#!/bin/bash
#
#
# Sends a message to the message broker on localhost.
# Uses ActiveMQ's REST API and the curl utility.
#

if [ $# -lt 2 -o $# -gt 3 ]  ; then
    echo "Usage: msgSender (topic|queue) DESTINATION [ FILE ]"
    echo "   Ex: msgSender topic myTopic msg.json"
    echo "   Ex: msgSender topic myTopic <<< 'this is my message'"
    exit 2
fi

UNAME=admin
PSWD=admin

TYPE=$1
DESTINATION=$2
FILE=$3

BHOST=${BROKER_HOST:-'localhost'}
BPORT=${BROKER_REST_PORT:-'8161'}

if [ -z "$FILE" -o "$FILE" = "-" ]  ; then
    # Get msg from stdin if no filename given

    ( echo -n "body="  ;  cat )  \
        | curl -u $UNAME:$PSWD --data-binary '@-' --proxy ""  \
             "http://$BHOST:$BPORT/api/message/$DESTINATION?type=$TYPE"
else
    # Get msg from a file
    if [ ! -r "$FILE" ]  ; then
        echo "File not found or not readable"
        exit 2
    fi

    ( echo -n "body="  ;  cat $FILE )  \
        | curl -u $UNAME:$PSWD --data-binary '@-' --proxy ""  \
             "http://$BHOST:$BPORT/api/message/$DESTINATION?type=$TYPE"
fi
...