這篇文章將為大家詳細講解有關(guān)SpringBoot中怎么使用RabbitMQ消息組件,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),安康企業(yè)網(wǎng)站建設(shè),安康品牌網(wǎng)站建設(shè),網(wǎng)站定制,安康網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,安康網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
1 在虛擬機中安裝rabbitmq
2 開啟rabbitmq
3 頁面查看rabbitmq
3 rabbitmq相關(guān)知識點講解 [1]
MQ全稱為Message Queue, 消息隊列(MQ)是一種應(yīng)用程序?qū)?yīng)用程序的通信方法。MQ是消費-生產(chǎn)者模型的一個典型的代表,一端往消息隊列中不斷寫入消息,而另一端則可以讀取隊列中的消息。
1、隊列、生產(chǎn)者、消費者
隊列:mq內(nèi)部存儲信息的 生產(chǎn)者:產(chǎn)生信息的 消費者:消費消息的
2、Exchange、Binding exchange:交換器,交換按照一定規(guī)則與對列綁定,消息才能到queue中 Binding用routing key
3、Exchange Type有四種
RabbitMQ常用的Exchange Type有三種:fanout、direct、topic。headers不常用。 fanout:把所有發(fā)送到該Exchange的消息投遞到所有與它綁定的隊列中。將消息發(fā)送與該exchange綁定的所有的對列,不需要比較路由鍵 direct:把消息投遞到那些binding key與routing key完全匹配的隊列中。要求路由鍵與對列名完全匹配 topic:將消息路由到binding key與routing key模式匹配的隊列中。用#匹配0或者多個,*匹配一個
4 下面簡單實現(xiàn)下圖的結(jié)果
1 創(chuàng)建direct類型的交換器
2 創(chuàng)建 fanout類型的交換器
3 創(chuàng)建 topic類型的交換器
4 創(chuàng)建的結(jié)果
5 創(chuàng)建對列,以下圖為例子
隊列創(chuàng)建完成
6 綁定隊列direct類型例子
7 綁定fanout類型的例子
8 綁定topic類型的例子
9 測試direct類型的交換器
測試結(jié)果
10 測試 fanout類型的交換器
測試結(jié)果
11 測試topic 類型的交換器
5 在springBoot項目下使用RabbitMq
pom.xml
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
applicaton.properties配置
spring.rabbitmq.host=192.168.1.139
spring.datasource.password=guest
spring.datasource.username=guest
book實體
public class book {
private String bookName; private String author; public book(String bookName, String author) { this.bookName = bookName; this.author = author; } public book() { } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = bookName; } [@Override](https://my.oschina.net/u/1162528) public String toString() { return "book{" + "bookName='" + bookName + '\'' + ", author='" + author + '\'' + '}'; }
}
測試發(fā)送數(shù)據(jù)代碼 @Test public void contextLoads() {
//message需要自己構(gòu)造一個,定義消息體內(nèi)容和消息頭 // rabbitTemplate.send(exchange,roteKey,message); //只需要傳入要發(fā)送的對象,自動序列化發(fā)送給rabbitmq,對象被默認序列化后發(fā)送 Mapmap= new HashMap<>(); map.put("msg","這是第一個消息"); map.put("data", Arrays.asList("hello","wored","rabbitmq")); rabbitTemplate.convertAndSend("exchange.direct","mao.news",new book("少年","天機")); } /** 采用廣播的方式 **/ [@Test](https://my.oschina.net/azibug) public void senMsg(){ rabbitTemplate.convertAndSend("exchange.fanout","",new book("少年","落非")); } 接收數(shù)據(jù)測試 //接收數(shù)據(jù) [@Test](https://my.oschina.net/azibug) public void receive(){ Object o=rabbitTemplate.receiveAndConvert("mao.news"); System.out.println(o.getClass()); System.out.println(o); } 上面測試有個問題,在管理界面顯示的是序列化的數(shù)據(jù) 下面來解決該問題
下面這樣就可以以json格式顯示,與之前的一篇博客類似,配置自定義redis配置
@Configuration
public class myamqpconfig { @Bean public MessageConverter messageConverter(){
return new Jackson2JsonMessageConverter(); }
}
使用下面的就可以收到消息
@Service
public class BookService {
@RabbitListener(queues = "mao.news") public void receive(book book1){ System.out.println("收到消息:"+book1.toString()); }
關(guān)于SpringBoot中怎么使用RabbitMQ消息組件就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。