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分别为 broker1192.168.116.51和 broker2192.168.116.52broker1 作为目标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:123456192.168.116.52:5672Prefetch 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:123456192.168.116.51:5672Add forwarding headers是否将标头添加到已 Shovel 的消息中以指示它们已被 Shovel 和 Shovel 的位置。如果未设置则默认为 false。Routing key如果选择交换器 exchange 作为目标则这里将设置路由 key。Reconnect delay一个 Shovel 节点丢失后等待多长时间进行自动重连默认是1秒。Acknowledgement mode消息确认模式有 on-confirm、on-publish 和 no-ack 三种方式。含义分布如下1on-confirm 默认的确认方式它需要在目的目标消息得到确认后才进行源目标消息的删除是最可靠的消息处理方式。不管是网络错误还是消息节点失败都不会丢失消息这种方式处理最慢。2on-publish 源目标将消息发送给目的目标消息就进行确认了这种情况在网络错误时可以进行重发但是在消息节点失败时会丢失消息。3no-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重启 rabbitmqcd /usr/local/rabbitmq_server-3.7.8/sbin 启动 rabbitmq-server -detached 停止 rabbitmqctl stop或者systemctl restart rabbitmq-server