rabbitmqadmin コマンドで RabbitMQ のキューにメッセージを登録し、メッセージを取得する。
rabbitmqadmin のインストール
RabbitMQ のインストール、起動
sudo yum install rabbitmq-server
sudo systemctl start rabbitmq-server
rabbitmqadmin を有効化
sudo yum install rabbitmq-plugins enable rabbitmq_management
~/bin に rabbitmqadmin をインストール
mkdir ~/bin
cd ~/bin
wget http://localhost:15672/cli/rabbitmqadmin
chmod a+x rabbitmqadmin
export PATH="${PATH}:~/bin"
rabbitmqadmin での RabbitMQ の操作
キューの作成
以下で キュー名=test_queue のキューを作成。
rabbitmqadmin declare queue name=test_queue
キューの一覧
rabbitmqadmin list queues
+------------+----------+
| name | messages |
+------------+----------+
| test_queue | 0 |
+------------+----------+
メッセージの登録
キュー名=test_queue のキューに "message_01" ... "mesage_05" を登録。
rabbitmqadmin publish routing_key=test_queue payload=message_01
rabbitmqadmin publish routing_key=test_queue payload=message_02
rabbitmqadmin publish routing_key=test_queue payload=message_03
rabbitmqadmin publish routing_key=test_queue payload=message_04
rabbitmqadmin publish routing_key=test_queue payload=message_05
rabbitmqadmin list queues
+------------+----------+
| name | messages |
+------------+----------+
| test_queue | 5 |
+------------+----------+
メッセージの取得
get でメッセージを取得。
メッセージの取得
rabbitmqadmin get queue=test_queue count=2
+-------------+----------+---------------+------------+---------------+------------------+------------+-------------+
| routing_key | exchange | message_count | payload | payload_bytes | payload_encoding | properties | redelivered |
+-------------+----------+---------------+------------+---------------+------------------+------------+-------------+
| test_queue | | 4 | message_01 | 10 | string | | False |
| test_queue | | 3 | message_02 | 10 | string | | False |
+-------------+----------+---------------+------------+---------------+------------------+------------+-------------+
ackmode=ack_requeue_true がデフォルトのため、キューからメッセージを取得してもメッセージ数が減少しない。
確認
rabbitmqadmin list queues
+------------+----------+
| name | messages |
+------------+----------+
| test_queue | 5 |
+------------+----------+
ackmode=ack_requeue_false を指定すると、キューからメッセージが削除される。
メッセージの取得
rabbitmqadmin get queue=test_queue count=1 ackmode=ack_requeue_false
+-------------+----------+---------------+------------+---------------+------------------+------------+-------------+
| routing_key | exchange | message_count | payload | payload_bytes | payload_encoding | properties | redelivered |
+-------------+----------+---------------+------------+---------------+------------------+------------+-------------+
| test_queue | | 4 | message_01 | 10 | string | | True |
+-------------+----------+---------------+------------+---------------+------------------+------------+-------------+
確認
rabbitmqadmin list queues
+------------+----------+
| name | messages |
+------------+----------+
| test_queue | 4 |
+------------+----------+