rabbitmqadmin コマンドでの RabbitMQ の操作

rabbitmqadmin コマンドで RabbitMQ のキューにメッセージを登録し、メッセージを取得する。

# rabbitmqadmin のインストール

RabbitMQ のインストール、起動

```bash:
sudo yum install rabbitmq-server
sudo systemctl start rabbitmq-server
```

rabbitmqadmin を有効化

```bash:
sudo rabbitmq-plugins enable rabbitmq_management
```
~/bin に rabbitmqadmin をインストール

```bash:
mkdir ~/bin
cd ~/bin
wget http://localhost:15672/cli/rabbitmqadmin
chmod a+x rabbitmqadmin
export PATH="${PATH}:~/bin"
```

# rabbitmqadmin での RabbitMQ の操作

## キューの作成

以下で キュー名=test_queue のキューを作成。
```bash:
rabbitmqadmin declare queue name=test_queue
```

## キューの一覧

```bash:
rabbitmqadmin list queues

+------------+----------+
|    name    | messages |
+------------+----------+
| test_queue | 0        |
+------------+----------+
```

## メッセージの登録

キュー名=test_queue のキューに "message_01" ... "mesage_05" を登録。

```bash:
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
```

```bash:
rabbitmqadmin list queues

+------------+----------+
|    name    | messages |
+------------+----------+
| test_queue | 5        |
+------------+----------+

```

## メッセージの取得

get でメッセージを取得。

```bash:メッセージの取得
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 がデフォルトのため、キューからメッセージを取得してもメッセージ数が減少しない。

```bash:確認
rabbitmqadmin list queues

+------------+----------+
|    name    | messages |
+------------+----------+
| test_queue | 5        |
+------------+----------+
```

ackmode=ack_requeue_false を指定すると、キューからメッセージが削除される。

```bash:メッセージの取得
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        |
+-------------+----------+---------------+------------+---------------+------------------+------------+-------------+
```

```bash:確認
rabbitmqadmin list queues

+------------+----------+
|    name    | messages |
+------------+----------+
| test_queue | 4        |
+------------+----------+
```