一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務(wù)器之家 - 編程語言 - JAVA教程 - SpringBoot整合RocketMQ入門示例

SpringBoot整合RocketMQ入門示例

2021-04-08 02:09FastCoder JAVA教程

RocketMQ主要由 Producer、Broker、Consumer 三部分組成,其中Producer 負(fù)責(zé)生產(chǎn)消息,Consumer 負(fù)責(zé)消費(fèi)消息,Broker 負(fù)責(zé)存儲(chǔ)消息。

SpringBoot整合RocketMQ入門示例

環(huán)境:springboot2.3.9 + RocketMQ4.8.0

RocketMQ機(jī)構(gòu)及概念

SpringBoot整合RocketMQ入門示例

1 消息模型(Message Model)

RocketMQ主要由 Producer、Broker、Consumer 三部分組成,其中Producer 負(fù)責(zé)生產(chǎn)消息,Consumer 負(fù)責(zé)消費(fèi)消息,Broker 負(fù)責(zé)存儲(chǔ)消息。Broker 在實(shí)際部署過程中對(duì)應(yīng)一臺(tái)服務(wù)器,每個(gè) Broker 可以存儲(chǔ)多個(gè)Topic的消息,每個(gè)Topic的消息也可以分片存儲(chǔ)于不同的 Broker。Message Queue 用于存儲(chǔ)消息的物理地址,每個(gè)Topic中的消息地址存儲(chǔ)于多個(gè) Message Queue 中。ConsumerGroup 由多個(gè)Consumer 實(shí)例構(gòu)成。

2 消息生產(chǎn)者(Producer)

負(fù)責(zé)生產(chǎn)消息,一般由業(yè)務(wù)系統(tǒng)負(fù)責(zé)生產(chǎn)消息。一個(gè)消息生產(chǎn)者會(huì)把業(yè)務(wù)應(yīng)用系統(tǒng)里產(chǎn)生的消息發(fā)送到broker服務(wù)器。RocketMQ提供多種發(fā)送方式,同步發(fā)送、異步發(fā)送、順序發(fā)送、單向發(fā)送。同步和異步方式均需要Broker返回確認(rèn)信息,單向發(fā)送不需要。

3 消息消費(fèi)者(Consumer)

負(fù)責(zé)消費(fèi)消息,一般是后臺(tái)系統(tǒng)負(fù)責(zé)異步消費(fèi)。一個(gè)消息消費(fèi)者會(huì)從Broker服務(wù)器拉取消息、并將其提供給應(yīng)用程序。從用戶應(yīng)用的角度而言提供了兩種消費(fèi)形式:拉取式消費(fèi)、推動(dòng)式消費(fèi)。

4 主題(Topic)

表示一類消息的集合,每個(gè)主題包含若干條消息,每條消息只能屬于一個(gè)主題,是RocketMQ進(jìn)行消息訂閱的基本單位。

5 代理服務(wù)器(Broker Server)

消息中轉(zhuǎn)角色,負(fù)責(zé)存儲(chǔ)消息、轉(zhuǎn)發(fā)消息。代理服務(wù)器在RocketMQ系統(tǒng)中負(fù)責(zé)接收從生產(chǎn)者發(fā)送來的消息并存儲(chǔ)、同時(shí)為消費(fèi)者的拉取請求作準(zhǔn)備。代理服務(wù)器也存儲(chǔ)消息相關(guān)的元數(shù)據(jù),包括消費(fèi)者組、消費(fèi)進(jìn)度偏移和主題和隊(duì)列消息等。如下圖:

SpringBoot整合RocketMQ入門示例

6 名字服務(wù)(Name Server)

名稱服務(wù)充當(dāng)路由消息的提供者。生產(chǎn)者或消費(fèi)者能夠通過名字服務(wù)查找各主題相應(yīng)的Broker IP列表。多個(gè)Namesrv實(shí)例組成集群,但相互獨(dú)立,沒有信息交換。

7 拉取式消費(fèi)(Pull Consumer)

Consumer消費(fèi)的一種類型,應(yīng)用通常主動(dòng)調(diào)用Consumer的拉消息方法從Broker服務(wù)器拉消息、主動(dòng)權(quán)由應(yīng)用控制。一旦獲取了批量消息,應(yīng)用就會(huì)啟動(dòng)消費(fèi)過程。

8 推動(dòng)式消費(fèi)(Push Consumer)

Consumer消費(fèi)的一種類型,該模式下Broker收到數(shù)據(jù)后會(huì)主動(dòng)推送給消費(fèi)端,該消費(fèi)模式一般實(shí)時(shí)性較高。

9 生產(chǎn)者組(Producer Group)

同一類Producer的集合,這類Producer發(fā)送同一類消息且發(fā)送邏輯一致。如果發(fā)送的是事務(wù)消息且原始生產(chǎn)者在發(fā)送之后崩潰,則Broker服務(wù)器會(huì)聯(lián)系同一生產(chǎn)者組的其他生產(chǎn)者實(shí)例以提交或回溯消費(fèi)。

10 消費(fèi)者組(Consumer Group)

同一類Consumer的集合,這類Consumer通常消費(fèi)同一類消息且消費(fèi)邏輯一致。消費(fèi)者組使得在消息消費(fèi)方面,實(shí)現(xiàn)負(fù)載均衡和容錯(cuò)的目標(biāo)變得非常容易。要注意的是,消費(fèi)者組的消費(fèi)者實(shí)例必須訂閱完全相同的Topic。RocketMQ 支持兩種消息模式:集群消費(fèi)(Clustering)和廣播消費(fèi)(Broadcasting)。

11 集群消費(fèi)(Clustering)

集群消費(fèi)模式下,相同Consumer Group的每個(gè)Consumer實(shí)例平均分?jǐn)傁ⅰ?/p>

12 廣播消費(fèi)(Broadcasting)

廣播消費(fèi)模式下,相同Consumer Group的每個(gè)Consumer實(shí)例都接收全量的消息。

13 普通順序消息(Normal Ordered Message)

普通順序消費(fèi)模式下,消費(fèi)者通過同一個(gè)消費(fèi)隊(duì)列收到的消息是有順序的,不同消息隊(duì)列收到的消息則可能是無順序的。

14 嚴(yán)格順序消息(Strictly Ordered Message)

嚴(yán)格順序消息模式下,消費(fèi)者收到的所有消息均是有順序的。

15 消息(Message)

消息系統(tǒng)所傳輸信息的物理載體,生產(chǎn)和消費(fèi)數(shù)據(jù)的最小單位,每條消息必須屬于一個(gè)主題。RocketMQ中每個(gè)消息擁有唯一的Message ID,且可以攜帶具有業(yè)務(wù)標(biāo)識(shí)的Key。系統(tǒng)提供了通過Message ID和Key查詢消息的功能。

16 標(biāo)簽(Tag)

為消息設(shè)置的標(biāo)志,用于同一主題下區(qū)分不同類型的消息。來自同一業(yè)務(wù)單元的消息,可以根據(jù)不同業(yè)務(wù)目的在同一主題下設(shè)置不同標(biāo)簽。標(biāo)簽?zāi)軌蛴行У乇3执a的清晰度和連貫性,并優(yōu)化RocketMQ提供的查詢系統(tǒng)。消費(fèi)者可以根據(jù)Tag實(shí)現(xiàn)對(duì)不同子主題的不同消費(fèi)邏輯,實(shí)現(xiàn)更好的擴(kuò)展性。

ActiveMQ,Kafka,RocketMQ對(duì)比:

 

SpringBoot整合RocketMQ入門示例

RocketMQ服務(wù)

 

1 下載RocketMQ

SpringBoot整合RocketMQ入門示例

2 配置環(huán)境變量

SpringBoot整合RocketMQ入門示例

3 啟動(dòng)Name Server

SpringBoot整合RocketMQ入門示例

4 啟動(dòng) Broker

SpringBoot整合RocketMQ入門示例

5 通過命令行發(fā)送 & 接收消息

設(shè)置環(huán)境變量:

  1. C:\Users\MSI-NB>set NAMESRV_ADDR=localhost:9876 

發(fā)送消息:

  1. C:\Users\MSI-NB>tools org.apache.rocketmq.example.quickstart.Producer 

SpringBoot整合RocketMQ入門示例

接收消息:

SpringBoot整合RocketMQ入門示例

SpringBoot整合RocketMQ入門

 

依賴:

  1. <dependency> 
  2.   <groupId>org.apache.rocketmq</groupId> 
  3.   <artifactId>rocketmq-spring-boot-starter</artifactId> 
  4.   <version>2.2.0</version> 
  5. </dependency> 

配置文件:

  1. rocketmq: 
  2.   nameServer: localhost:9876 
  3.   producer: 
  4.     group: demo-mq 

生產(chǎn)者:

  1. @Service 
  2. public class ProducerService { 
  3.      
  4.     @Resource 
  5.     private RocketMQTemplate rocketMQTemplate ; 
  6.      
  7.     public void send(String message) { 
  8.         rocketMQTemplate.convertAndSend("test-topic", message); 
  9.     } 
  10.      

消費(fèi)者:

  1. @RocketMQMessageListener(topic = "test-topic", consumerGroup = "consumer01-group"
  2. @Component 
  3. public class ConsumerListener implements RocketMQListener<String> { 
  4.  
  5.     @Override 
  6.     public void onMessage(String message) { 
  7.         System.out.println("接收到消息:" + message) ; 
  8.     } 
  9.  

這里的topic要和發(fā)送端設(shè)置的一致,consumerGroup可隨意。

發(fā)送接口:

  1. @RestController 
  2. @RequestMapping("/messages"
  3. public class MessageController { 
  4.      
  5.     @Resource 
  6.     private ProducerService ps ; 
  7.      
  8.     @GetMapping(""
  9.     public Object send(String message) { 
  10.         ps.send(message) ; 
  11.         return "send success" ; 
  12.     } 
  13.      

測試:

SpringBoot整合RocketMQ入門示例

SpringBoot整合RocketMQ入門示例

發(fā)送消息指定tags

發(fā)送時(shí):

  1. rocketMQTemplate.convertAndSend("test-topic:tag1", message); 

接收時(shí):

  1. @RocketMQMessageListener(topic = "test-topic", consumerGroup = "consumer01-group", selectorExpression = "tag1"

selectorExpression:默認(rèn)是 “*” ,這里指定與發(fā)送的一致;

這里看下源碼:

RocketMQUtil.java

SpringBoot整合RocketMQ入門示例

這里topic與tags是用冒號(hào) ":" 分割的,tags就是取的數(shù)組的第二個(gè)。

原文地址:https://www.toutiao.com/i6944602891181244932/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 高清男的插曲女的 欢迎你老狼 | 男人免费视频 | 亚洲天堂视频在线观看免费 | 羞羞私人影院可以直接免费观影吗 | 亚洲成人免费看 | 精品在线91| 四虎最新永久免费网址 | caoporm国产精品视频免费 | 免费观看成年人视频 | 嫩草影院永久入口在线观看 | 白丝打脚枪 | 国产重口老太伦 | 日韩在线观看一区二区不卡视频 | 亚洲 小说 欧美 激情 另类 | 免费观看在线观看 | 黄在线观看www免费看 | 日韩在线第一区 | 果冻传媒天美传媒网址入口 | 91免费永久在线地址 | 亚洲男人天堂网址 | 精品国产成a人在线观看 | 草草在线影院 | 婷婷网址 | 欧美日韩精品一区二区三区视频在线 | 国产午夜免费不卡精品理论片 | 亚洲欧美在线观看一区二区 | 特级毛片全部免费播放器 | 国产精品最新资源网 | 经典千人斩一区二区视频 | fulao在线观看的 | 亚洲欧美日韩精品久久亚洲区 | jizz女16处| 韩国女主播在线大尺无遮挡 | 帅小伙和警官同性3p | 二次元美女互摸隐私互扒 | yin娃sao货调教情趣用品店 | 男人资源站 | 国产日本欧美亚洲精品视 | 亚洲精品久久久久69影院 | 日本96在线精品视频免费观看 | 亚洲国产精品高清在线 |