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管理页面看到,没优化前是一个很长的字符串。