SpringBoot笔记(四) RabbitMQ 集成和使用

依赖和配置

build.gradle

1
2
3
dependencies {
compile('org.springframework.boot:spring-boot-starter-amqp')
}

application.yml

1
2
3
4
5
6
spring:
rabbitmq:
host: localhost
port: 5672
username: demo
password: demo123

其他貌似都是代码里面的事儿了😂

最简单的demo

搭了一个最简单的demo,备忘

  • 1发布者生产消息
  • 1消费者接收消息

https://github.com/michaelzx/spring-boot-rabbit-demo

延迟消息队列

两个核心关键词:TTLDLX

TTL

TTL是Time To Live的缩写,生存时长
RabbitMQ,允许我们为Queue(队列)Message(消息)设置TTL,一旦过期,就会变成Dead Letter(死信)

如果同时,为队列消息设置TTL,则会以较小的为准

DLX

DLX是Dead Letter Exchanges的缩写,死信交换器

RabbitMQ的队列提供了2个可选参数:x-dead-letter-exchangex-dead-letter-routing-key

  • x-dead-letter-exchange:出现死信之后,将死信从新发送到指定的交换器
  • x-dead-letter-routing-key:出现死信之后,将死信从新发送到指定的队列

这两个参数必须同时使用,只有这样才能确定最后是转发到哪个队列的

xxx
查看大图

做了一个简单的demo:https://github.com/michaelzx/spring-boot-rabbit-mq-delay-demo

广播(订阅)

N个消费者,消费同一个队列,每个人都能拿到相同的消息

待实践,备忘留坑

参考文章

《RabbitMQ 实现延迟队列的两种方式》
《spring boot 自学笔记(五) Rabbitmq集成,延时消息队列实现》
《SpringBoot的RabbitMQ消息队列: 四、第三模式”Publish/Subscribe”》