RabbitMQ整合SpringBoot&集群搭建
RabbitMQ整合SpringBoot
Producer
1、配置文件 application.properties
1 | |
2、设置RabbitMQ的交换机、队列、绑定关系
1 | |
3、声明消息发送者
1 | |
4、测试消息发送
1 | |

Consumer
1 | |
1 | |
可以处理的消息类型
java对象、json、String、图片、excel文件等
延时队列的实现
下载启动延时组件
解压延时插件: unzip
rabbitmq_delayed_message_exchange-20171215-3.6.x.zip
把延时插件拷贝到指定目录下:cp rabbitmq_delayed_message_exchange-20171215-3.6.x.ez
/usr/lib/rabbitmq/lib/rabbitmq_server-3.7.5/plugins
启动延时插件: rabbitmq-plugins enable rabbitmq_delayed_message_exchange
声明延时队列
1 | |
发送延时消息
1 | |
可靠消息方案案例
消息成功投递 + 消费幂等

相关实体
1 | |
1 | |
消息可靠性投递基于定时任务解决方案(消息生产端)
1、application.yml
1 | |
2、MQ绑定关系配置
1 | |
3、生产者
1 | |
4、消息确认回调监听
1 | |
5、消息拒绝返回监听
1 | |
6、生成消息
1 | |
7、定时任务扫描重试推送
1 | |
消费者幂等消费
1、application.yml
1 | |
2、消费者
1 | |
消费者的几种写法
目前主流做法是 直接避免代码重复消费 和 代码支持重复消费,业务上幂等
1、唯一业务ID
代码接受重复消息,但还是业务上结果是幂等的:如果有插入数据库的业务,根据唯一业务id获取分布式锁,进行插入或者更新(重复消费时)
2、(唯一业务ID +(辅助标志位(UUID、时间戳等是业务场景而定))or 唯一消息id
消费时redis setnx成功则继续消费,失败则视为重复消费,跳过消费返回ack
3、消费者模板
1 | |
1 | |