用rabbitmqadmin 模拟消息的创建、发布、订阅【修改自:通义千问2.5】
前言
rabbitmqadmin 工具可以方便地管理 RabbitMQ 的资源,
包括创建交换机 Exchanges 、队列 Queues 、绑定 Bindings ,以及发布 Publish 和订阅 Subscribe 消息。
确保你已经下载并安装了 rabbitmqadmin,并且 RabbitMQ 管理插件是启用的。你可以从 http://localhost:15672/cli/ 下载 rabbitmqadmin 脚本:
wget -c http://localhost:15672/cli/rabbitmqadmin -O /usr/local/sbin/rabbitmqadmin
chmod +x /usr/local/sbin/rabbitmqadmin
file /usr/local/sbin/rabbitmqadmin #rabbitmqadmin实为Python脚本
增加命令补全(可选):
sh -c 'rabbitmqadmin --bash-completion > /etc/bash_completion.d/rabbitmqadmin'
1. 创建 Topic Exchange
首先,我们创建一个名为 my_topic_exchange 的 【topic类型】exchange交换机。
rabbitmqadmin declare exchange --vhost=/ name=my_topic_exchange type=topic durable=true auto_delete=false
rabbitmqadmin list exchanges
2. 创建 Queue
接下来,创建两个队列:queue.logs.error 和 queue.logs.info。我们将为不同的日志级别(如错误和信息)分别设置队列。
rabbitmqadmin declare queue --vhost=/ name=queue.logs.error durable=true auto_delete=false
rabbitmqadmin declare queue --vhost=/ name=queue.logs.info durable=true auto_delete=false
rabbitmqadmin list queues
3. 绑定 Queue 到 Exchange
现在,我们需要将队列绑定到交换机,并指定路由键(routing key)。对于 queue.logs.error,我们只对带有 .error 后缀的消息感兴趣;而对于 queue.logs.info,我们关注所有以 .info 结尾的消息。
rabbitmqadmin declare binding --vhost=/ source=my_topic_exchange destination=queue.logs.error routing_key="*.error"
rabbitmqadmin declare binding --vhost=/ source=my_topic_exchange destination=queue.logs.info routing_key="*.info"
rabbitmqadmin list bindings
这里使用了通配符 *,表示匹配任意单个单词。如果你想更精确地控制,可以使用 # 来匹配零个或多个单词。
4. 发布消息
使用 publish 命令向 my_topic_exchange 发送消息。我们可以发送不同类型的消息来测试不同队列的行为。
发布一条错误日志消息
rabbitmqadmin publish --vhost=/ exchange=my_topic_exchange routing_key="app.error" payload='{"log": "This is an error message"}'
发布一条信息日志消息
rabbitmqadmin publish --vhost=/ exchange=my_topic_exchange routing_key="app.info" payload='{"log": "This is an info message"}'
5. 订阅并消费消息
为了消费消息,可以使用 get 命令从队列中获取消息。
注意,这是一次性的操作,即每条消息只会被取出一次。
如果希望持续监听消息,需要编写一个消费者程序或者使用其他工具如 amqp-cli。
从 queue.logs.error 获取消息
rabbitmqadmin get --vhost=/ queue=queue.logs.error ackmode=ack_requeue_false
从 queue.logs.info 获取消息
rabbitmqadmin get --vhost=/ queue=queue.logs.info ackmode=ack_requeue_false count=3
命令中的
ack_requeue_false 表示一旦消息被取出后就不会再放回队列;如果设置为 true,则消息会在处理后重新入队。
count=3 表示一次性获取的消息数量
web管理页面验证
通过访问 RabbitMQ 的 Web 管理界面 (http://localhost:15672) 或者使用 rabbitmqadmin 查看交换机、队列的状态和消息情况。

浙公网安备 33010602011771号