KET 在線
模擬測試
小程序在線模擬測試
PET 真實
考場模擬
OPFUN Talk萌課堂,專注青少在線語言啟蒙!——寰宇咨詢中心資訊網(wǎng)
上海 18761612306
簡介:本文將 rocktmq-spring-boot 簡單介紹一下設(shè)計實現(xiàn),讀者可以通過這篇文章了解一下。 RocketMQ Client 端集變成 spring-boot-starter 開發(fā)框架的細節(jié),通過一個簡單的例子,我們將一步一步地解釋如何使用這個例子 spring-boot-starter 配備工具包,發(fā)送和消費 RocketMQ 消息。
在 Spring 生態(tài)中玩轉(zhuǎn) RocketMQ 系列文章:
《怎樣在 Spring 生態(tài)中玩轉(zhuǎn) RocketMQ?》
關(guān)于羅美琪和春波特的故事...》
《RocketMQ-Spring 畢業(yè)兩周年,為什么會變成? Spring 最受歡迎的生態(tài)學(xué) messaging 實現(xiàn)?》
通過這篇文章,你會知道:
Spring 新聞框架介紹
rocketmq-spring-boot 具體實現(xiàn)
使用示例
前言
上世紀 90 年底,隨之而來 Java EE(Enterprise Edition) 出現(xiàn),特別是 Enterprise Java Beans 應(yīng)用程序需要復(fù)雜的描述符配置和復(fù)雜的代碼實現(xiàn),增加了許多開發(fā)者的學(xué)習(xí)曲線和開發(fā)成本,這是建立在簡單基礎(chǔ)上的 XML 配置和一般 Java 目標(Plain Old Java Objects)的 Spring 技術(shù)應(yīng)時而生,依賴注入(Dependency Injection), 控制反轉(zhuǎn)(Inversion of Control)并且面向切面編程(AOP)技術(shù)更敏捷地解決了傳統(tǒng)問題 Java 公司和版本不足。
隨著 Spring 根據(jù)注釋的不斷演變,(Annotation)配置逐漸被取代 XML 文檔配備,2014 年 4 月 1 日,Spring Boot 1.0.0 正式發(fā)布,以“約定大于配置”為基礎(chǔ)(Convention over configuration)這個概念可以快速地開發(fā)、檢測、運行和部署 Spring 應(yīng)用程序,并且可以簡單地與各種啟動器(例如 spring-boot-web-starter)結(jié)合起來,讓應(yīng)用程序直接以命令行的形式運行,不再需要部署到單個容器中。這是一個簡單、直接、快速地構(gòu)建和開發(fā)應(yīng)用的過程,可以通過協(xié)議配置和簡化布局,受到越來越多開發(fā)者的歡迎。
為了運用 Spring Boot 快速發(fā)展,使用戶能更加靈活地使用。 RocketMQ 消息客戶端,Apache RocketMQ 社區(qū)推出了 spring-boot-starter 實現(xiàn)。伴隨著分布式事務(wù)消息功能 RocketMQ 4.3.0 最近版本發(fā)布,相關(guān)版本升級。 spring-boot 代碼,支持分布式事務(wù)的回查和通過注釋發(fā)送事務(wù)信息。
本論文將簡要介紹當前的設(shè)計實現(xiàn)情況,讀者可以通過本文了解到 RocketMQ Client 端集變成 spring-boot-starter 開發(fā)框架的細節(jié),然后通過一個簡單的例子,一步一步地解釋如何使用這個例子。 spring-boot-starter 配備工具包,發(fā)送和消費 RocketMQ 消息。
Spring 里面的新聞框架
1. Spring Messaging
2. Spring Cloud Stream
Spring Cloud Stream 融合了 Spring Integration 注釋及功能,其應(yīng)用模型如下:
通過這種方式,開發(fā)者可以很容易地將不同類型的中間件應(yīng)用到相同的代碼中:只需在構(gòu)建過程中包含不同的內(nèi)容。 Binder。在更復(fù)雜的使用場景中,還可以在使用中包裝多個。 Binder 并且讓它自己選擇 Binder,甚至在運行過程中使用不同的通道。 Binder。
spring-boot-starter的實現(xiàn)
1. spring-boot-starter 的實現(xiàn)步驟
對于一個 spring-boot-starter 實現(xiàn)需要包括以下幾個方面:
1)在 pom.xml 的概念
定義最終會產(chǎn)生 starter 部件信息
<groupId>org.apache.rocketmq</groupId><artifactId>spring-boot-starter-rocketmq</artifactId><version>1.0.0-SNAPSHOT</version>
定義依賴包
分為兩部分:Spring 自己的依賴包和 RocketMQ 的依賴包。
二是環(huán)境變量類
應(yīng)用特性環(huán)境變量類型的定義 RocketMQProperties,這個 Bean 定義一組默認屬性值。用戶正在使用最后一個 starter 當然,取值可以根據(jù)該類定義的屬性進行修改,而不是直接修改該類配置,而是修改該類配置。 spring-boot 應(yīng)用中對應(yīng)的環(huán)境變量:src/main/resources/application.properties。
定義自動加載類
定義 src/resources/META-INF/spring.factories 文件中的自動加載類, 其目的是讓 spring boot 根據(jù)本文所指定的自動配置類別,自動初始化相關(guān) Bean、Component 或 Service,其內(nèi)容如下:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\org.apache.rocketmq.spring.starter.RocketMQAutoConfiguration
在 RocketMQAutoConfiguration 在類的具體實現(xiàn)中,對客戶直接使用的開放性定義 Bean 目標包含:
RocketMQProperties 加載應(yīng)用特性環(huán)境變量的處理類;
RocketMQTemplate 發(fā)送方用戶發(fā)送消息的發(fā)送模板類;
四是最后具體進行 RpcketMQ 有關(guān)的封裝
2. 實現(xiàn)了消息發(fā)送端
一般的發(fā)送端
發(fā)送代碼封裝在發(fā)送端 RocketMQTemplate POJO 下圖是發(fā)送端相關(guān)代碼的調(diào)用關(guān)系圖:
為了與 Spring Messaging 發(fā)送模板兼容,現(xiàn)在 RocketMQTemplate 集成了 AbstractMessageSendingTemplate 抽象類,支持相關(guān)消息轉(zhuǎn)換和發(fā)送方式,最終,這些方法將代理給予代理。 doSend() 方法、doSend() 以及 RocoketMQ 一些獨特的方法,如異步、單向和順序等,直接添加到其中 RoketMQTempalte 其中,這些方法直接被代理調(diào)用。 RocketMQ 的 Producer API 發(fā)送消息。
2)事務(wù)消息發(fā)送端
對事務(wù)消息的處理,在消息發(fā)送端進行了部分擴展,參照上面的調(diào)用關(guān)系類圖。
3. 實現(xiàn)消息消費端
DefaultRocketMQListenerContainer 在器皿目標中,器皿目標將根據(jù)消費方式(并發(fā)或順序)進行, RocketMQListener 包裝到具體的 RocketMQ 實現(xiàn)內(nèi)部并發(fā)或順序接口。建立在容器中 RocketMQ Consumer 定制的目標、啟動和監(jiān)控 Topic 消息,如果有消費消息,則回調(diào)至回調(diào)。 Listener 的 onMessage() 方法。
使用示例
上面一章已經(jīng)介紹過了 RocketMQ 在 spring-boot-starter 在這里,我們將通過一個最簡單的消息發(fā)送和消費的例子來介紹如何使這種方法。 rocketmq-spring-boot-starter。
1)啟動 NameServer 和 Broker
二是在實例中創(chuàng)建所需要的 Topics
執(zhí)行以下命令行操作,在執(zhí)行啟動命令的目錄下執(zhí)行:
bash bin/mqadmin updateTopic -c DefaultCluster -t string-topic
2. 編譯 rocketmq-spring-boot-starter
目前的 spring-boot-starter 依賴于尚未提交的東西 Maven 核心數(shù)據(jù)庫,用戶需要自行下載 git 源代碼,然后執(zhí)行 mvn clean install 安裝在當?shù)貍}庫。
git clone https://github.com/apache/rocketmq-externals.gitcd rocketmq-spring-boot-startermvn clean install
3. 編寫客戶端代碼
顧客若使用,則需在消息發(fā)布及消費者端使用。 maven 環(huán)境變量 pom.xml 加入以下依賴:
特性 spring-boot-starter-rocketmq-version 的取值為:1.0.0-SNAPSHOT, 它與上一步安裝在本地倉庫的版本一致。
1)消息發(fā)送端代碼
發(fā)送端環(huán)境變量 application.properties:
發(fā)送端 Java 代碼:
二是消息消費端代碼
消費環(huán)境變量 application.properties:
消費端 Java 代碼:
在此簡單介紹一下使用情況。 spring-boot 為了編寫最基本的信息發(fā)送和接收代碼,如果需要了解更多的調(diào)用方法,例如: 異步發(fā)送,目標信息體,指定 tag 請參考標簽和指定事務(wù)信息。 github 描述文檔和詳細代碼。這些高級功能將在后續(xù)陸續(xù)介紹。
網(wǎng)站導(dǎo)航
熱點關(guān)注