news 2026/7/16 18:23:26

rabbitmq3.7.4 详细教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
rabbitmq3.7.4 详细教程

下载安装包

通过网盘分享的文件:rabbitmq
链接: https://pan.baidu.com/s/12MkEqBRMAUMKAwgo09ejew 提取码: 9gh9

安装shovel_management插件

用 Shovel 做「远程队列拉取消息到本地测试队列」

rabbitmq-plugins enable rabbitmq_shovel rabbitmq_shovel_management systemctl restart rabbitmq-server

重启后刷新 15672 管理页,Admin 菜单会出现 Shovel Management

配置shovel

介绍 rabbitmq_shovel_management 提供的 Web 管理界面进行设置。其中,有两个 broker,分别为 broker1(192.168.116.51)和 broker2(192.168.116.52),broker1 作为目标,broker2 作为数据源。我们将在 broker1 上面创建 Shovel,用户在 broker2 队列上发布消息,将会自动同步到 broker1 的队列中,最后进行消费。详细配置步骤如下:

powershell判断对方端口是否开放

Test-NetConnection 192.168.0.159 -Port 5672 -InformationLevel Quiet

创建交换器

使用浏览器访问 http://192.168.116.51:15672/#/exchanges 地址,点击“Add a new exchange”按钮去添加一个交换器,如下图:

上图中,添加了一个名为“shovel-exchange”,类型为 topic,可持久化的交换器 exchange。效果如下图:

创建队列

使用浏览器访问 http://192.168.116.51:15672/#/queues 地址,点击“Add a new queue”按钮创建一个队列,如下图:

上图中,创建了一个名为“shovel-queue”的,可持久化的队列。效果如下图:

绑定交换器和队列

在 exchange 页面选中刚刚创建的 shovel-exchange 交换器,即访问http://192.168.116.51:15672/#/exchanges/%2F/shovel-exchange 地址,点击“Add binding from this exchange”按钮去绑定一个队列到当前交换器。如下图:

上图中将队列“shovel-queue”队列使用“shovel-rk”绑定 key 绑定到 shovel-exchange 交换器。效果如下图:

创建 Shovel

使用浏览器访问 http://192.168.116.51:15672/#/dynamic-shovels 地址(“Admin”>“Shovel Management”),点击“Add a new shovel”按钮去添加一个 Shovel,如下图:

上图中,添加了一个名为“shovel-demo”的 Shovel。其中各个参数含义如下:

  • Name:表示 Shovel 的名称。

  • Source:用来定义数据的来源。首先选择的是 AMQP 的协议版本,然后就是进行 URI 的定义。URI 定义有 6 种方式:

    • URI:定义数据来源的 AMQP URL 地址。例如:amqp://root:123456@192.168.116.52:5672

    • Prefetch count:用来指定消息可以从源目标一次传送多少消息给目的目标,默认是1000。

    • Auto-delete:是否自动删除,默认是 never。never 表示不删除,直到明确的进行删除。after initial length transferred 表示 Shovel 启动时会检查队列的长度,它将传输消息,然后删除自己。

    • Routing key:如果选择数据源为交换器 exhcange,则这里将设置路由 key。

  • Destination:目标目的的定义,它与source定义的内容差不多,没有Prefetch count和Auto-delete,多了一个Add forwarding headers,它表示是否向被铲起的消息添加报头,指示它们从何处被铲起,以及从何处被铲起。如果没有设置,则默认为false。

    • URI:定义目标地址 AMQP 地址,例如:amqp://root:123456@192.168.116.51:5672

    • Add forwarding headers:是否将标头添加到已 Shovel 的消息中,以指示它们已被 Shovel 和 Shovel 的位置。如果未设置,则默认为 false。

    • Routing key:如果选择交换器 exchange 作为目标,则这里将设置路由 key。

  • Reconnect delay:一个 Shovel 节点丢失后等待多长时间进行自动重连,默认是1秒。

  • Acknowledgement mode:消息确认模式,有 on-confirm、on-publish 和 no-ack 三种方式。含义分布如下:

    (1)on-confirm 默认的确认方式,它需要在目的目标消息得到确认后才进行源目标消息的删除,是最可靠的消息处理方式。不管是网络错误还是消息节点失败都不会丢失消息,这种方式处理最慢。

    (2)on-publish 源目标将消息发送给目的目标消息就进行确认了,这种情况在网络错误时可以进行重发,但是在消息节点失败时会丢失消息。

    (3)no-ack 不需要确认就可以进行消息删除。这种方式最不安全对于消息来说,但是却是最快的。

添加完成后,效果如下图:

点击“Admin”>“Shovel Status”,查看已经创建 Shovel 的状态信息。如下图:

发布消息

前面已将在 broker1 上面创建好队列、交换器和 Shovel,接下来转移到 broker2,发布消息。

使用浏览器访问 http://192.168.116.52:15672/#/queues 地址(点击“Admin”>“Queue”),如下图:

选中“shovel-queue”队列(即访问 http://192.168.116.52:15672/#/queues/%2F/shovel-queue),点击“Publish message”按钮去发布消息,如下图:

上图中,发送了一个内容为“hello message”的消息。

消费消息

消息发布成功后,继续回到 broker1 中,点开刚刚创建的 shovel-queue 队列(地址:http://192.168.116.51:15672/#/queues/%2F/shovel-queue),点击“Get Message)按钮去消费一个消息。如下图:

注意:get messages默认只去第一条,有多种获取方式

  • Nack message requeue true:取出来后再放回队列
  • Ack message requeue false:取出来后确认消费,直接删除
  • Reject requeue true:取出来后拒绝,但再放回队列
  • Reject requeue false:取出来后拒绝,并删除

从上图可知,我们收到了一条内容为“hello message”的消息。

安装延时插件

官网下载插件

GitHub - rabbitmq/rabbitmq-delayed-message-exchange: Delayed Messaging for RabbitMQ

链接:https://pan.baidu.com/s/1f8k-V0JCbBjkY6dORWu7TQ
提取码:79pv

延时插件 rabbitmq_delayed_message_exchange-3.8.0.ez 上传到 /usr/local/rabbitmq_server-3.7.8/plugins 下

执行命令,生效该插件。(需要进入插件目录下执行指令)

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

重启 rabbitmq

cd /usr/local/rabbitmq_server-3.7.8/sbin 启动: rabbitmq-server -detached 停止: rabbitmqctl stop

或者

systemctl restart rabbitmq-server
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/16 18:17:40

Ubuntu静态IP配置演进与多版本兼容指南

1. 为什么需要关注Ubuntu静态IP配置的演进?在服务器运维和开发环境中,静态IP地址配置是一项基础但至关重要的技能。不同于动态获取IP(DHCP),静态IP能确保设备在网络中始终保持固定的地址,这对于以下场景尤为…

作者头像 李华
网站建设 2026/7/16 18:14:43

激光SLAM与视觉SLAM:从技术原理到选型实战的深度解析

1. SLAM技术基础:从定位到地图构建的魔法 想象一下你被蒙上眼睛带到一个陌生的房间,要求你一边摸索一边画出这个房间的地图——这就是SLAM(同步定位与地图构建)技术要解决的核心问题。这项让机器人在未知环境中自主导航的"黑…

作者头像 李华
网站建设 2026/7/16 18:14:28

C++固定块内存池实现:无碎片化内存管理原理与实战

1. 项目概述:为什么我们需要一个无碎片的内存池? 在C的世界里,内存管理是每个开发者绕不开的坎。从 new 和 delete 的简单使用,到复杂系统的性能调优,内存分配的效率直接决定了程序的响应速度和稳定性。你有没有遇…

作者头像 李华
网站建设 2026/7/16 18:14:21

运算放大器带宽计算与优化设计指南

1. 运算放大器带宽的基础概念 运算放大器的带宽是衡量其频率响应能力的关键指标,它决定了放大器能够有效工作的频率范围。在实际电路设计中,带宽参数直接影响信号处理的精度和稳定性。 1.1 带宽的物理意义 带宽(Bandwidth)通常定…

作者头像 李华