安装
docker run --name rabbitmq \
-p 5672:5672 \
-p 15672:15672 \
--network hm-net \
--hostname my-rabbit \
-e RABBITMQ_DEFAULT_USER=user \
-e RABBITMQ_DEFAULT_PASS=password \
-v mq_plugins:/plugins \
-d rabbitmq:3.8-management
Spring Boot 集成
发送者
- 发送者超时重连(异步)配置
spring:
application:
name: publisher
rabbitmq:
host: 192.168.208.128
port: 5672
username: user
password: password
virtual-host: /hmall
# 发送confirm机制
publisher-confirm-type: correlated
publisher-returns: true
# 重试机制
template:
retry:
enabled: true
max-attempts: 3
initial-interval: 1000
max-interval: 10000
multiplier: 2
server:
port: 7081
- 使用配置:
- 配置消息转化服务,默认是JDK序列化,不易读,占用空间大。兼容性不高
@Bean
public MessageConverter messageConverter() {
Jackson2JsonMessageConverter jackson2JsonMessageConverter = new Jackson2JsonMessageConverter();
jackson2JsonMessageConverter.setCreateMessageIds(true);
return jackson2JsonMessageConverter;
}
- 设置消息发送回调
回调有两种情况,一是到了交换机就会返回confirm信息,如果没有到达队列,将会回调ReturnsCallback,此时一般是运维层面的问题

image.png|600
CodeBlock Loading...
JAVA API使用
- 带回调的使用:
CodeBlock Loading...
- 延迟队列使用
CodeBlock Loading...
消费者
spring配置
CodeBlock Loading...
创建交换机、队列、绑定关系
CodeBlock Loading...
创建消息监听
CodeBlock Loading...
死信队列的初始化
当到达重试次数后,有三种策略,分别为

image.png|600
CodeBlock Loading...
延迟队列的使用
安装插件(github) rabbitmq/rabbitmq-delayed-message-exchange: Delayed Messaging for RabbitMQ (github.com) 复制插件到插件文件夹 安装插件
CodeBlock Loading...
创建交换机、队列、绑定关系
CodeBlock Loading...
发送消息
CodeBlock Loading...
消费延迟消息:和普通队列一致