當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringBoot整合RabbitMQ 实现五种消息模型
生活随笔
收集整理的這篇文章主要介紹了
SpringBoot整合RabbitMQ 实现五种消息模型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- SpringBoot中使用RabbitMQ
- 搭建初始環境
- 引入依賴
- 配置配置文件
- 測試類 注入 rabbitTemplate
- 消息隊列RabbitMQ之五種消息模型
- 第一種直連模型使用
- 開發生產者
- 開發消費者
- 第二種work模型使用
- 開發生產者
- 開發消費者
- 第三種 Fanout 廣播模型
- 開發生產者
- 開發消費者
- 第四種 Route 路由模型
- 開發生產者
- 開發消費者
- 第五種 Topic 訂閱模型(動態路由模型)
- 開發生產者
- 開發消費者
SpringBoot中使用RabbitMQ
搭建初始環境
引入依賴
<!-- 引入 rabbitmq 集成依賴 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>配置配置文件
server:port: 9090spring:application:# 微服務系統有意義, 養成好習慣, 先寫出來name: rabbitmq-02-springbootrabbitmq:host: 127.0.0.1port: 5672username: codingcepassword: 123456virtual-host: /codingce測試類 注入 rabbitTemplate
// 注入 rabbitTemplate@Autowiredprivate RabbitTemplate rabbitTemplate;消息隊列RabbitMQ之五種消息模型
第一種直連模型使用
開發生產者
/*** 直連*/@Testvoid contextLoads() {rabbitTemplate.convertAndSend("hello", "hello word");}開發消費者
/*** @author mxz*/ @Component @RabbitListener(queuesToDeclare = @Queue("hello")) public class HelloCustomer {/*** @param message*/@RabbitHandlerpublic void receivel(String message) {System.out.println("message: " + message);}}第二種work模型使用
開發生產者
/*** work*/@Testvoid testWork() {for (int i = 0; i < 10; i++) {rabbitTemplate.convertAndSend("work", "work模型");}}開發消費者
/*** 第二種模型 work 模型** @author mxz*/ @Component public class WorkCustomer {/*** 第1個消費者** @param message*/@RabbitListener(queuesToDeclare = @Queue("work"))public void receivel(String message) {System.out.println("message1 = " + message);}/*** 第2個消費者** @param message*/@RabbitListener(queuesToDeclare = @Queue("work"))public void receivel2(String message) {System.out.println("message2 = " + message);} }第三種 Fanout 廣播模型
開發生產者
/*** fanout 廣播*/@Testvoid testFanout() {rabbitTemplate.convertAndSend("logs", "", "Fanout模型發送的消息");}開發消費者
/*** fanout** @author mxz*/ @Component public class FanoutCustomer {@RabbitListener(bindings = {@QueueBinding(value = @Queue, // 創建臨時隊列exchange = @Exchange(value = "logs", type = "fanout") // 綁定的交換機)})public void receivel(String message) {System.out.println("message1 = " + message);}@RabbitListener(bindings = {@QueueBinding(value = @Queue, // 創建臨時隊列exchange = @Exchange(value = "logs", type = "fanout") // 綁定的交換機)})public void receive2(String message) {System.out.println("message2 = " + message);} }第四種 Route 路由模型
開發生產者
/*** route 路由*/@Testvoid testRoute() {// exchange 交換機名稱rabbitTemplate.convertAndSend("directs", "info", "info的key的路由消息");}開發消費者
/*** @author mxz*/ @Component public class RouteCustomer {@RabbitListener(bindings = {@QueueBinding(value = @Queue, // 綁定臨時隊列exchange = @Exchange(value = "directs", type = "direct"), // 自定義交換機名稱和類型key = {"info", "error", "warn"})})public void receivel(String message) {System.out.println("message1 = " + message);}@RabbitListener(bindings = {@QueueBinding(value = @Queue, // 綁定臨時隊列exchange = @Exchange(value = "directs", type = "direct"), // 自定義交換機名稱和類型key = {"error"})})public void receivel2(String message) {System.out.println("message1 = " + message);}}第五種 Topic 訂閱模型(動態路由模型)
開發生產者
/*** topic 訂閱模式 動態路由*/@Testvoid testTopic() {rabbitTemplate.convertAndSend("topics", "user.save", "user.save 路由消息");}開發消費者
/*** 訂閱模型** @author mxz*/ @Component public class TopicCustomer {@RabbitListener(bindings = {@QueueBinding(value = @Queue,exchange = @Exchange(type = "topic", name = "topics"),key = {"user.save", "user.*"})})public void receivel(String message) {System.out.println("message1" + message);}@RabbitListener(bindings = {@QueueBinding(value = @Queue,exchange = @Exchange(type = "topic", name = "topics"),key = {"produce.#", "order.#"})})public void receivel2(String message) {System.out.println("message2" + message);} }文章已上傳gitee https://gitee.com/codingce/hexo-blog
項目地址github: https://github.com/xzMhehe/codingce-java
總結
以上是生活随笔為你收集整理的SpringBoot整合RabbitMQ 实现五种消息模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RabbitMQ 消息队列六种模式
- 下一篇: IDEA出现错误:找不到或无法加载主类