1、介绍

 
 
spring集成了rabbitmq,可以对rabbitmq先进行安装简单了解。参考我的rabbitmq文章。
2、使用

1、基本消息队列BasicQueue案例
一个消息消费者,上个消息未处理完,队列中的消息将阻塞,导致内存泄漏
1、引入AMQP依赖

2、添加发送消息代码

3、添加消费消费代码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wlOaUFiq-1682588538524)(image-20230427154059677.png)]
测试:消费者的服务需启动,执行发送消息代码。
2、工作消息队列WorkQueue案例

基本消息队列如果队列里的消息越来越多可能导致内存泄漏,而工作消息队列这里可以有两个消息消费者方法。

1、添加发送消息代码
引jar包与基本消息队列一致,此处省略

2、添加消息消费代码

测试:消费者的服务需启动,执行发送消息代码。
3、优化消息预取
以上的测试代码,默认两个消费者会预取消息队列中的任务,导致消息队列平均分配了一样数量的任务。这里消费者2处理消息的速度比较慢,所以这个预取逻辑不够友好。
优化:只要修改消息预取的数量限制,即可
 
3、发布订阅案例

1、广播Fanout方式
会将同一个消息发送给了所有的消费者。

 

1、申明广播交换机、申明队列并绑定

启动服务后,在rabbit的管理页面可以看到如下交换机和队列已完成绑定

2、添加消息消费代码

记得类上加@Component
3、添加消息发送代码


同一个消息发送给了所有的消费者。
2、路由Direct方式

1、消费者申明路由交换机、队列和路由key

2、添加消息发送代码

3、话题Topic方式

 
1、消费者申明话题交换机、队列和路由key

2、添加消息发送代码

3、优化
1、优化消息发送/接收格式

 
优化完之后,发送的消息我们可以在rabbit管理页面看到,没优化前是一个很长的字符串。

 



















