1仅财、基礎(chǔ)性知識文檔介紹
- 關(guān)系RabbitMQ的一些使用場景和使用背景狈究,基礎(chǔ)性的概念知識,請參考這篇文章 消息隊列之 RabbitMQ 满着。
2谦炒、如何在MacOS 上安裝RabbitMQ
關(guān)于安裝,請參考這篇文章风喇,親測有效宁改。在MacOS 上安裝RabbitMQ
這里我使用的是macOS 10.13 版本,啟動的時候需要找到RabbitMQ在本地的位置魂莫。
啟動rabbitmq-server
cd /usr/local/Cellar/rabbitmq/3.7.2/sbin
sudo ./rabbitmq-server
打開瀏覽器并訪問:http://localhost:15672/还蹲,并使用默認(rèn)用戶guest登錄,密碼也為guest耙考。我們可以看到如下圖的管理頁面:
點擊Admin標(biāo)簽谜喊,在這里可以進(jìn)行用戶的管理。
3倦始、Springboot集成RabbitMQ
通過在Spring Boot應(yīng)用中整合RabbitMQ斗遏,并實現(xiàn)一個簡單的發(fā)送、接收消息的例子來對RabbitMQ有一個直觀的感受和理解鞋邑。
在Spring Boot中整合RabbitMQ是一件非常容易的事诵次,因為之前我們已經(jīng)介紹過Starter POMs,其中的AMQP模塊就可以很好的支持RabbitMQ枚碗,下面我們就來詳細(xì)說說整合過程:
在pom.xml中引入如下依賴內(nèi)容逾一,其中spring-boot-starter-amqp用于支持RabbitMQ。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
-
在application.properties中配置關(guān)于RabbitMQ的連接和用戶信息肮雨,用戶可以回到上面的安裝內(nèi)容遵堵,在管理頁面中創(chuàng)建用戶。
隊列配置
- 發(fā)送者
- 接收者
- 測試類中
- 運行結(jié)果:
注意事項:
發(fā)送者和接收者的queue name必須一致怨规,不然不能接收陌宿。
多個發(fā)送者和接收者,接收端仍然會均勻接收到消息波丰。
springboot以及完美的支持對象的發(fā)送和接收限番,不需要格外的配置。
//發(fā)送者
public void send(User user) {
System.out.println("Sender object: " + user.toString());
this.rabbitTemplate.convertAndSend("object", user);
}
//接收者
@RabbitHandler
public void process(User user) {
System.out.println("Receiver object : " + user);
}
-
Topic Exchange
- topic 是RabbitMQ中最靈活的一種方式呀舔,可以根據(jù)routing_key自由的綁定不同的隊列弥虐。 首先對topic規(guī)則配置扩灯,這里使用兩個隊列來測試
使用queueMessages同時匹配兩個隊列,queueMessage只匹配”topic.message”隊列
發(fā)送send1會匹配到topic.#和topic.message 兩個Receiver都可以收到消息霜瘪,發(fā)送send2只有topic.#可以匹配所有只有Receiver2監(jiān)聽到消息
- 接收者
-
Fanout Exchange
- Fanout 就是我們熟悉的廣播模式或者訂閱模式珠插,給Fanout交換機發(fā)送消息,綁定了這個交換機的所有隊列都收到這個消息颖对。
這里使用了A捻撑、B、C三個隊列綁定到Fanout交換機上面缤底,發(fā)送端的routing_key寫任何字符都會被忽略:
- 發(fā)送者
- 接收者
- 結(jié)果如下:
結(jié)果說明顾患,綁定到fanout交換機上面的隊列都收到了消息
微信掃碼關(guān)注java架構(gòu),獲取Java面試題和架構(gòu)師相關(guān)題目和視頻个唧。