用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.errorqueue.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 查看交换机、队列的状态和消息情况。

posted @   M1927  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示