上一篇 <<<Rabbitmq如何保證消息不丟失
下一篇 >>>Rabbitmq如何保證冪等性
1.注意點
a床绪、隊列綁定的key必須和@bean時的方法名一致才可以自動識別
b、隊列和交換機會自動生成
2.核心代碼
2.1 依賴包引入
<!-- 添加springboot對amqp的支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2.2 配置信息
spring:
rabbitmq:
####連接地址
host: 10.211.55.16
####端口號
port: 5672
####賬號
username: jarye
####密碼
password: 123456
### 地址
virtual-host: /mytest1205
2.3 bean初始化
@Component
public class RabbitMQConfig {
/**
* 定義交換機
*/
private String EXCHANGE_SPRINGBOOT_NAME = "springboot_topic_exchange";
/**
* 短信隊列
*/
private String FANOUT_SMS_QUEUE = "springboot_topic_sms_queue";
/**
* 郵件隊列
*/
private String FANOUT_SMS_EMAIL = "springboot_topic_email_queue";
/**
* 創(chuàng)建短信隊列
*/
@Bean
public Queue smsQueue() {
return new Queue(FANOUT_SMS_QUEUE);
}
/**
* 創(chuàng)建郵件隊列
*/
@Bean
public Queue emailQueue() {
return new Queue(FANOUT_SMS_EMAIL);
}
/**
* 創(chuàng)建交換機
*
* @return
*/
@Bean
public TopicExchange topicExchange() {
return new TopicExchange(EXCHANGE_SPRINGBOOT_NAME);
}
/**
* 定義短信隊列綁定交換機
*/
@Bean
public Binding smsBindingExchange(Queue smsQueue, TopicExchange topicExchange) {
return BindingBuilder.bind(smsQueue).to(topicExchange).with("my.sms");
}
/**
* 定義郵件隊列綁定交換機
*/
@Bean
public Binding emailBindingExchange(Queue emailQueue, TopicExchange topicExchange) {
return BindingBuilder.bind(emailQueue).to(topicExchange).with("my.#");
}
}
2.4 生產(chǎn)者
@RestController
public class FanoutProducer {
@Autowired
private AmqpTemplate amqpTemplate;
@RequestMapping("/sendMsg")
public String sendMsg(String msg) {
// 參數(shù)1 交換機名稱 筹淫、參數(shù)2路由key 參數(shù)3 消息
amqpTemplate.convertAndSend("springboot_topic_exchange", "my.time", msg);
return "success";
}
}
2.5 消費者
@Component
@RabbitListener(queues = "springboot_topic_email_queue")
public class FanoutEmailConsumer {
@RabbitHandler
public void consumer(String msg){
System.out.println("郵件消費者收到消息:"+msg);
}
}
@Component
@RabbitListener(queues = "springboot_topic_sms_queue")
public class FanoutSmsConsumer {
@RabbitHandler
public void consumer(String msg){
System.out.println("短信消費者收到消息:"+msg);
}
}
推薦閱讀:
<<<消息中間件的核心思想
<<<消息中間件常見問題匯總
<<<基于Netty簡單手寫消息中間件思路
<<<消息隊列常用名詞與中間件對比
<<<Rabbitmq基礎(chǔ)知識
<<<Rabbitmq示例之點對點簡單隊列
<<<Rabbitmq示例之工作(公平)隊列
<<<Rabbitmq示例之發(fā)布訂閱模式
<<<Rabbitmq示例之路由模式Routing
<<<Rabbitmq示例之通配符模式Topics
<<<Rabbitmq示例之RPC模式
<<<Rabbitmq隊列模式總結(jié)
<<<Rabbitmq如何保證消息不丟失
<<<Rabbitmq如何保證冪等性
<<<Rabbitmq的重試策略
<<<Rabbitmq通過死信隊列實現(xiàn)過期監(jiān)聽
<<<Rabbitmq解決分布式事務(wù)思路
<<<Rabbitmq解決分布式事務(wù)demo
<<<Rabbitmq環(huán)境安裝
<<<Kafka中的專業(yè)術(shù)語都有哪些
<<<Kafka的設(shè)計原理介紹
<<<Kafka集群如何實現(xiàn)相互感知
<<<Kafka如何實現(xiàn)分區(qū)及指定分區(qū)消費
<<<Kafka如何保證消息順序消費
<<<Kafka如何保證高吞吐量
<<<Kafka集群環(huán)境搭建
<<<RocketMQ架構(gòu)原理
<<<RocketMQ张足、RabbitMQ和Kafka的對比
<<<SpringBoot整合RocketMQ示例
<<<RocketMQ保證順序消費demo
<<<RocketMQ如何動態(tài)擴容和縮容
<<<RocketMQ如何解決分布式事務(wù)
<<<RocketMQ單機版本安裝
<<<RocketMQ集群環(huán)境程序啟用相關(guān)知識點
<<<RocketMQ單機做主備實操
<<<RocketMQ所有配置說明