成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SpringBoot整合RocketMQ入門示例

開發 前端
RocketMQ主要由 Producer、Broker、Consumer 三部分組成,其中Producer 負責生產消息,Consumer 負責消費消息,Broker 負責存儲消息。

[[391523]]

環境:springboot2.3.9 + RocketMQ4.8.0

RocketMQ機構及概念

1 消息模型(Message Model)

RocketMQ主要由 Producer、Broker、Consumer 三部分組成,其中Producer 負責生產消息,Consumer 負責消費消息,Broker 負責存儲消息。Broker 在實際部署過程中對應一臺服務器,每個 Broker 可以存儲多個Topic的消息,每個Topic的消息也可以分片存儲于不同的 Broker。Message Queue 用于存儲消息的物理地址,每個Topic中的消息地址存儲于多個 Message Queue 中。ConsumerGroup 由多個Consumer 實例構成。

2 消息生產者(Producer)

負責生產消息,一般由業務系統負責生產消息。一個消息生產者會把業務應用系統里產生的消息發送到broker服務器。RocketMQ提供多種發送方式,同步發送、異步發送、順序發送、單向發送。同步和異步方式均需要Broker返回確認信息,單向發送不需要。

3 消息消費者(Consumer)

負責消費消息,一般是后臺系統負責異步消費。一個消息消費者會從Broker服務器拉取消息、并將其提供給應用程序。從用戶應用的角度而言提供了兩種消費形式:拉取式消費、推動式消費。

4 主題(Topic)

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

5 代理服務器(Broker Server)

消息中轉角色,負責存儲消息、轉發消息。代理服務器在RocketMQ系統中負責接收從生產者發送來的消息并存儲、同時為消費者的拉取請求作準備。代理服務器也存儲消息相關的元數據,包括消費者組、消費進度偏移和主題和隊列消息等。如下圖:

6 名字服務(Name Server)

名稱服務充當路由消息的提供者。生產者或消費者能夠通過名字服務查找各主題相應的Broker IP列表。多個Namesrv實例組成集群,但相互獨立,沒有信息交換。

7 拉取式消費(Pull Consumer)

Consumer消費的一種類型,應用通常主動調用Consumer的拉消息方法從Broker服務器拉消息、主動權由應用控制。一旦獲取了批量消息,應用就會啟動消費過程。

8 推動式消費(Push Consumer)

Consumer消費的一種類型,該模式下Broker收到數據后會主動推送給消費端,該消費模式一般實時性較高。

9 生產者組(Producer Group)

同一類Producer的集合,這類Producer發送同一類消息且發送邏輯一致。如果發送的是事務消息且原始生產者在發送之后崩潰,則Broker服務器會聯系同一生產者組的其他生產者實例以提交或回溯消費。

10 消費者組(Consumer Group)

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

11 集群消費(Clustering)

集群消費模式下,相同Consumer Group的每個Consumer實例平均分攤消息。

12 廣播消費(Broadcasting)

廣播消費模式下,相同Consumer Group的每個Consumer實例都接收全量的消息。

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

普通順序消費模式下,消費者通過同一個消費隊列收到的消息是有順序的,不同消息隊列收到的消息則可能是無順序的。

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

嚴格順序消息模式下,消費者收到的所有消息均是有順序的。

15 消息(Message)

消息系統所傳輸信息的物理載體,生產和消費數據的最小單位,每條消息必須屬于一個主題。RocketMQ中每個消息擁有唯一的Message ID,且可以攜帶具有業務標識的Key。系統提供了通過Message ID和Key查詢消息的功能。

16 標簽(Tag)

為消息設置的標志,用于同一主題下區分不同類型的消息。來自同一業務單元的消息,可以根據不同業務目的在同一主題下設置不同標簽。標簽能夠有效地保持代碼的清晰度和連貫性,并優化RocketMQ提供的查詢系統。消費者可以根據Tag實現對不同子主題的不同消費邏輯,實現更好的擴展性。

ActiveMQ,Kafka,RocketMQ對比:

 

RocketMQ服務

1 下載RocketMQ

2 配置環境變量

3 啟動Name Server

4 啟動 Broker

5 通過命令行發送 & 接收消息

設置環境變量:

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

發送消息:

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

接收消息:

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 

生產者:

  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.      

消費者:

  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要和發送端設置的一致,consumerGroup可隨意。

發送接口:

  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.      

測試:

發送消息指定tags

發送時:

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

接收時:

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

selectorExpression:默認是 “*” ,這里指定與發送的一致;

這里看下源碼:

RocketMQUtil.java

這里topic與tags是用冒號 ":" 分割的,tags就是取的數組的第二個。

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2021-04-15 09:17:01

SpringBootRocketMQ

2023-09-04 08:00:53

提交事務消息

2023-04-12 08:56:37

RocketMQSpring核心業務

2023-10-13 08:23:05

2022-06-02 08:21:07

RocketMQ消息中間件

2025-04-09 08:20:00

RocketMQ消息隊列開發

2023-08-09 08:01:00

WebSockett服務器web

2021-11-29 07:47:56

RocketMQ分布式消息

2020-09-21 08:17:53

SpringBoot

2020-04-23 15:08:41

SpringBootMyCatJava

2024-04-11 13:13:27

2011-07-01 17:12:44

Qt OpenGL

2021-07-16 07:57:35

SpringBootOpenFeign微服務

2020-01-10 15:42:13

SpringBootRedis數據庫

2017-09-12 10:26:47

springbootmaven結構

2009-09-23 17:56:45

JSF入門

2020-06-29 07:43:12

緩存RedisSpringBoot

2021-05-19 09:53:16

SpringbootMyBatisMySQL

2023-07-05 09:48:44

Activiti部署

2022-04-28 07:31:41

Springkafka數據量
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲视频www| 91在线一区 | 国产一区二区免费 | 亚洲美女av网站 | 国产精品美女一区二区 | 69精品久久久久久 | 日韩中文字幕视频 | 亚洲精品一区在线 | 欧美13videosex性极品 | 天天拍天天插 | 噜噜噜噜狠狠狠7777视频 | 欧美精品91 | 看一级毛片视频 | 国产精品日韩欧美一区二区三区 | 国产精品国产a级 | 国产精品久久久久久久久久了 | 国产精品亚洲精品 | 亚洲人va欧美va人人爽 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 亚洲91精品 | 亚洲福利在线观看 | 欧美日韩在线成人 | 欧美成人激情视频 | 日日操操操 | 成人国产精品久久 | 久久国产精品一区二区三区 | 久久综合激情 | 久久久久久亚洲精品 | 国产成人av在线 | 国产精品不卡 | 久久国产一区 | 高清黄色 | 国产精品久久久久永久免费观看 | 亚洲精视频| 日韩欧美国产不卡 | 久久久久91 | 午夜久久久| 美女视频一区二区三区 | 日韩国产中文字幕 | 久久久久久成人网 | 不卡在线视频 |