操作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 ...
操作008-01-A:生产者端消息确认机制
一、创建module
二、搭建环境
1、配置POM
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</art...
操作007:整合SpringBoot
1、消费者工程
①创建module
②配置POM
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifac...
操作006:主题模式
一、生产者代码
package com.atguigu.rabbitmq.topic;
import com.atguigu.rabbitmq.util.ConnectionUtil;
import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.c...
操作006-路由模式
一、生产者代码
package com.atguigu.rabbitmq.routing;
import com.atguigu.rabbitmq.util.ConnectionUtil;
import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq...
操作004:发布订阅模式
一、生产者代码
package com.atguigu.rabbitmq.fanout;
import com.atguigu.rabbitmq.util.ConnectionUtil;
import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitm...
POM中没有指定java版本
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
...
操作003:工作队列模式
一、生产者代码
1、封装工具类
package com.atguigu.rabbitmq.util;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
public class Connection...