web-dev-qa-db-ja.com

コマンドラインからキューとバインディングを作成するRabbitMQ

マシンにRabbitMQがインストールされている場合、コマンドラインからメッセージキューを作成し、クライアントを使用せずに特定の交換にバインドする方法はありますか?

それは不可能だと思いますが、確かにしたいです。

59
Fanooos

RabbitMQ管理プラグイン をインストールします。すべてのキュー/交換/などを構成するために使用できるコマンドラインツールが付属しています。

24
OJ.

要約:

他の答えは、求められたものの良い代替案です。以下は、コマンドラインから使用できるコマンドです。

まず、必要な準備作業をすべて行います。 rabbit、rabbitmqadmin、およびrabbitctlをインストールします。アイデアは、rabbitmqctlおよびrabbitmqadminのコマンドを使用することです。いくつかのコマンドの例を見ることができます: https://www.rabbitmq.com/management-cli.html

コマンド/セットアップの例:

次のコマンドは、必要なもののすべてではないにしても、大部分を提供する必要があります。

# Get the cli and make it available to use.
wget http://127.0.0.1:15672/cli/rabbitmqadmin
chmod +x rabbitmqadmin
mv rabbitmqadmin /etc/rabbitmq

ユーザーと権限を追加します

rabbitmqctl add_user testuser testpassword
rabbitmqctl set_user_tags testuser administrator
rabbitmqctl set_permissions -p / testuser ".*" ".*" ".*"

仮想ホストを作成して権限を設定する

rabbitmqctl add_vhost Some_Virtual_Host
rabbitmqctl set_permissions -p Some_Virtual_Host guest ".*" ".*" ".*"

取引所を作る

./rabbitmqadmin declare exchange --vhost=Some_Virtual_Host name=some_exchange type=direct

キューを作成する

./rabbitmqadmin declare queue --vhost=Some_Virtual_Host name=some_outgoing_queue durable=true

バインディングを作成する

./rabbitmqadmin --vhost="Some_Virtual_Host" declare binding source="some_exchange" destination_type="queue" destination="some_incoming_queue" routing_key="some_routing_key"

Pythonでバインドする代替方法

以下はコマンドラインバインディングの代替です。時々問題が発生し、次のpythonコードの方が信頼性が高いことがわかりました。

#!/usr/bin/env python
import pika

rabbitmq_Host = "127.0.0.1"
rabbitmq_port = 5672
rabbitmq_virtual_Host = "Some_Virtual_Host"
rabbitmq_send_exchange = "some_exchange" 
rabbitmq_rcv_exchange = "some_exchange"
rabbitmq_rcv_queue = "some_incoming_queue"
rabbitmq_rcv_key = "some_routing_key"

outgoingRoutingKeys = ["outgoing_routing_key"]
outgoingQueues = ["some_outgoing_queue "]

# The binding area
credentials = pika.PlainCredentials(rabbitmq_user, rabbitmq_password)
connection = pika.BlockingConnection(pika.ConnectionParameters(rabbitmq_Host, rabbitmq_port, rabbitmq_virtual_Host, credentials))
channel = connection.channel()
channel.queue_bind(exchange=rabbitmq_rcv_exchange, queue=rabbitmq_rcv_queue, routing_key=rabbitmq_rcv_key)

for index in range(len(outgoingRoutingKeys)):
    channel.queue_bind(exchange=rabbitmq_send_exchange, queue=outgoingQueues[index], routing_key=outgoingRoutingKeys[index])

上記は、Pythonを使用してスクリプトの一部として実行できます。発信のものを配列に入れていることに注意してください。これにより、デプロイが簡単になります。

最後の考え

上記により、正しい方向に進むことができ、特定のコマンドが意味をなさない場合はgoogleを使用するか、rabbitmqadmin help subcommands。自分自身を説明する変数を使用しようとしました。がんばろう :)

92
James Oravec

Exchangeの作成:rabbitmqadmin -u {user} -p {password} -V {vhost} declare exchange name={name} type={type}

キューの作成:rabbitmqadmin -u {user} -p {password} -V {vhost} declare queue name={name}

Exchangeへのキューのバインド:rabbitmqadmin -u {user} -p {password} -V {vhost} declare binding source={Exchange} destination={queue}

6
Kaushal Dontula

Linux Debianを使用している場合、「amqp-tools」というパッケージがあります。でインストールする

apt-get install amqp-tools

その後、amqp-publishなどのコマンドラインを使用して、キューにメッセージを送信できます。

amqp-publish -e exchange_name -b "your message"

次に、キューからメッセージを収集できます

amqp-get -q queue_name

または

amqp-consume -q queue_name

rabbitmq-c package/libraryの(コマンドライン)の例もあります。ビルド後、次のようなコマンドラインからメッセージを送信できます。

amqp_sendstring localhost 5672 amq.direct test "hello world"

楽しむ ...

4
rahard

Windows上のCLIからRabbitMq Exchange、Queue、Bindingsを動的に作成します

既にRabbitMQサーバーをインストールし、複数のキューとエクスチェンジを使用して実行していたので、コマンドラインからオンザフライで作成したいと考えました。これは古い質問ですが、この情報を提供することが役立つと思いました。

以下は私がしたことです:

セットアップ

  1. ダウンロードしてインストールしたPython 2.6.6-201008-24 Windows x86-64 MSIインストーラー、python 2.Xより大きいが3.Xではないバージョン
  2. RabbitMqAdminのダウンロード:RabbitMq Webユーザーインターフェイスには、 http:// server-name:15672/cli / (server-name:rabbitmqがインストールされているサーバー)に移動するリンクコマンドラインがあります代わりに、上記のURLを使用して、python exeの場所にrabbitmqadmin.exeとしてファイルを保存します

例:C:\ Python26\C:\ Python26\python C:\ Python26\rabbitmqadmin.exe

コード:以下のコマンドを使用するバッチファイル内

  1. 交換を作成します。

    c:\ python26\python.exe rabbitmqadmin.exeは交換名を宣言します=ExchangeName1type = topic permanent = true

  2. キューを作成します。

    c:\ python26\python.exe rabbitmqadmin.exe declare queue name =NameofQueue1permanent = true

  3. バインディングを作成します。

    c:\ python26\python.exe rabbitmqadmin.exeバインディングの宣言source = ExchangeName1 destination_type = queue destination =NameofQueue1routing_key =RoutingKey1

rabbitmqadmin.exe -help -subcommandsを実行すると、使用可能なすべてのコマンドがリストされます。

例:c:\ python26\python.exe rabbitmqadmin.exe -help -subcommands

2
Milli

rabbitmqctl、提供されたコマンドラインインターフェイスは、キューを作成してバインドする機能を公開しません。

ただし、簡単なスクリプトを使用してそれを行うのは非常に簡単であり、ウサギmq入門ガイドでは、パブリッシャーとコンシューマー側の両方でその例をいくつか示しています。

#do some work to connect
#do some work to open a channel
channel.queue_declare(queue='helloworld')

私はつなぐことを大事にしていますが、それはキューを作成するための文字通り1つのライナーです。また、この操作はis等です。つまり、ステートメントをスクリプトに含めることができ、キューを再作成したり、同じ名前の既存のものを吹き飛ばしたりしないことを安全に確認できます。

2
bakasan

パーティーに少し遅れたかもしれませんが、私はCURLを使用してそうしました。

キューの場合:

curl -i -u RABBITUSER:RABBITPASSWORD -H "content-type:application/json" \
-XPUT -d'{"durable":true}' \
http://192.168.99.100:15672/api/queues/%2f/QUEUENAME

バインディング用

curl -i -u RABBITUSER:RABBITPASSWORD -H "content-type:application/json" \
-XPOST -d"{\"routing_key\":\"QUEUENAME\"}" \
http://192.168.99.100:15672/api/bindings/%2f/e/EXCHANGENAME/q/QUEUENAME

注192.168.99.100:15672はRMQ管理を指します

2
userMod2

RabbitMQ Pythonチュートリアル から取られた、より最小限のPythonの例です。

最初に、pikaをインストールします。

Sudo easy_install pika
# (or use pip)

Localhostにメッセージを送信するために必要なのはこれだけです。

import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()

channel.queue_declare(queue='test-queue')
channel.basic_publish(exchange='', routing_key='test-queue', body='Hello World!')
0
Steve Rukuts