您好,登錄后才能下訂單哦!
小編給大家分享一下Spring Boot如何整合RabbitMQ,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
交換器就像路由器,我們先是把消息發(fā)到交換器,然后交換器再根據(jù)綁定鍵(binding key)和生產(chǎn)者發(fā)送消息時(shí)的路由鍵routingKey,
按照交換類(lèi)型Exchange Type(fanout,direct,topic)把消息投遞到對(duì)應(yīng)的隊(duì)列。
存放消息的隊(duì)列。
交換器怎么知道把這條消息投遞到哪個(gè)隊(duì)列呢?這就需要用到綁定了。大概就是:使用某個(gè)綁定鍵(binding key),把某個(gè)隊(duì)列(Queue)綁定到某個(gè)交換器(Exchange),這樣交換器就知道根據(jù)路由鍵把這條消息投遞到哪個(gè)隊(duì)列了。
application.yaml文件中配置
@Configuration
public class RabbitMQConfig {
public final static String QUEUE_NAME = "spring-boot-queue";
public final static String EXCHANGE_NAME = "spring-boot-exchange";
public final static String BINDING_KEY = "spring.boot.key.#";
// 創(chuàng)建隊(duì)列
@Bean
public Queue queue() {
return new Queue(QUEUE_NAME);
}
// 創(chuàng)建一個(gè) topic 類(lèi)型的交換器
@Bean
public TopicExchange exchange() {
return new TopicExchange(EXCHANGE_NAME);
}
// 使用路由鍵(routingKey)把隊(duì)列(Queue)綁定到交換器(Exchange)
@Bean
public Binding binding(Queue queue, TopicExchange exchange) {
return BindingBuilder.bind(queue).to(exchange).with(BINDING_KEY);
}
}
注:上面配置的是TopicExchange
實(shí)際業(yè)務(wù)中,可以配置多個(gè)隊(duì)列和binding來(lái)滿(mǎn)足需求。
直接調(diào)用 rabbitTemplate 的 convertAndSend 方法就可以了。從下面的代碼里也可以看出,我們不是把消息直接發(fā)送到隊(duì)列里面的,而是先發(fā)送到了交換器,交換器再根據(jù)路由鍵把我們的消息投遞到對(duì)應(yīng)的隊(duì)列。
消費(fèi)者也很簡(jiǎn)單,只需要對(duì)應(yīng)的方法上加入 @RabbitListener 注解,指定需要監(jiān)聽(tīng)的隊(duì)列名稱(chēng)即可。
運(yùn)行項(xiàng)目,然后打開(kāi)瀏覽器,輸入 http://localhost:9999/sendMessage (具體地址根據(jù)服務(wù)器)。在控制臺(tái)就可以看到生產(chǎn)者在不停的的發(fā)送消息,消費(fèi)者不斷的在消費(fèi)消息。
看完了這篇文章,相信你對(duì)“Spring Boot如何整合RabbitMQ”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。