操作025:Shovel
一、启用Shovel插件
rabbitmq-plugins enable rabbitmq_shovel
rabbitmq-plugins enable rabbitmq_shovel_management
二、配置Shovel
三、测试
1、测试计划
节点
交换机
路由键
队列
深圳节点
exchange.sho...
操作024:Federation插件
一、简介
Federation插件的设计目标是使RabbitMQ在不同的Broker节点之间进行消息传递而无须建立集群。
它可以在不同的管理域中的Broker或集群间传递消息,这些管理域可能设置了不同的用户和vhost,也可能运行在不同版本的RabbitMQ和Erlang上。Federation基于AMQP 0-9-1协...
操作018:Stream Queue
一、启用插件
说明:只有启用了Stream插件,才能使用流式队列的完整功能
在集群每个节点中依次执行如下操作:
# 启用Stream插件
rabbitmq-plugins enable rabbitmq_stream
# 重启rabbit应用
rabbitmqctl stop_app
rabbitmqctl sta...
操作017:仲裁队列
一、创建仲裁队列
说明:鉴于仲裁队列的功能,肯定是需要在前面集群的基础上操作!
1、创建交换机
和仲裁队列绑定的交换机没有特殊,我们还是创建一个direct交换机即可
交换机名称:exchange.quorum.test
2、创建仲裁队列
队列名称:queue.quorum.test
3、绑定交换机
路由键:routing.k...
操作016:集群搭建
一、安装RabbitMQ
1、前置要求
CentOS发行版的版本≥CentOS 8 Stream
镜像下载地址:https://mirrors.163.com/centos/8-stream/isos/x86_64/CentOS-Stream-8-20240318.0-x86_64-dvd1.iso
RabbitMQ安装方式官方指南:
...
操作015:优先级队列
一、创建相关资源
1、创建交换机
exchange.test.priority
2、创建队列
queue.test.priority
x-max-priority
3、队列绑定交换机
二、生产者发送消息
1、配置POM
<parent>
<groupId>org.springframework...
操作014:惰性队列
一、创建惰性队列
1、官网说明
队列可以创建为默认或惰性模式,模式指定方式是:
使用队列策略(建议)
设置queue.declare参数
如果策略和队列参数同时指定,那么队列参数有更高优先级。如果队列模式是在声明时通过可选参数指定的,那么只能通过删除队列再重新创建来修改。
2、基于策略方式设定
# 登录Docker容器
docke...
操作013:事务消息之生产者端
一、测试代码
1、引入依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<...
操作012:延迟插件
一、插件简介
官网地址:https://github.com/rabbitmq/rabbitmq-delayed-message-exchange
延迟极限:最多两天
二、插件安装
1、确定卷映射目录
docker inspect rabbitmq
运行结果:
"Mounts": [
{
...
操作011:死信
一、测试相关准备
1、创建死信交换机和死信队列
常规设定即可,没有特殊设置:
死信交换机:exchange.dead.letter.video
死信队列:queue.dead.letter.video
死信路由键:routing.key.dead.letter.video
2、创建正常交换机和正常队列
注意:一定要注意正常队列有诸多限定...
操作010:消息超时
一、队列层面设置
1、设置
别忘了设置绑定关系:
2、测试
不启动消费端程序
向设置了过期时间的队列中发送100条消息
等10秒后,看是否全部被过期删除
二、消息层面设置
1、设置
import org.springframework.amqp.core.Message;
import org.springframework....
操作009:Prefetch
一、思路
生产者发送100个消息
对照两种情况:
消费端没有设置prefetch参数:100个消息被全部取回
消费端设置prefetch参数为1:100个消息慢慢取回
二、生产者端代码
@Test
public void testSendMessage() {
for (int i = 0; i < 1...
操作008-03:消费端消息确认
一、ACK
ACK是acknowledge的缩写,表示已确认
二、默认情况
默认情况下,消费端取回消息后,默认会自动返回ACK确认消息,所以在前面的测试中消息被消费端消费之后,RabbitMQ得到ACK确认信息就会删除消息
但实际开发中,消费端根据消息队列投递的消息执行对应的业务,未必都能执行成功,如果希望能够多次重试,那么...
操作008-02:交换机和队列持久化
一、测试非持久化交换机和队列
1、创建非持久化交换机
创建之后,可以在列表中看到:
2、创建非持久化队列
创建之后,可以在列表中看到:
3、绑定
4、发送消息
public static final String EXCHANGE_TRANSIENT = "exchange.transient.user...
操作008-01-B:备份交换机
一、创建备份交换机
1、创建备份交换机
注意:备份交换机一定要选择fanout类型,因为原交换机转入备份交换机时并不会指定路由键
2、创建备份交换机要绑定的队列
①创建队列
②绑定交换机
注意:这里是要和备份交换机绑定
3、针对备份队列创建消费端监听器
public static final String ...