用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
查看交换机、队列的状态和消息情况。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY