OPFUN Talk萌課堂,專注青少在線語(yǔ)言啟蒙!——寰宇咨詢中心資訊網(wǎng)

上海 18761612306

首頁(yè) > 資訊列表 > 資訊詳情

ket一對(duì)一app:rocktmq-spring

來(lái)源:小編 編輯:小編 日期:2023-01-22 12:11:10

簡(jiǎn)介:本文將 rocktmq-spring-boot 簡(jiǎn)單介紹一下設(shè)計(jì)實(shí)現(xiàn),讀者可以通過(guò)這篇文章了解一下。 RocketMQ Client 端集變成 spring-boot-starter 開發(fā)框架的細(xì)節(jié),通過(guò)一個(gè)簡(jiǎn)單的例子,我們將一步一步地解釋如何使用這個(gè)例子 spring-boot-starter 配備工具包,發(fā)送和消費(fèi) RocketMQ 消息。

在 Spring 生態(tài)中玩轉(zhuǎn) RocketMQ 系列文章:

《怎樣在 Spring 生態(tài)中玩轉(zhuǎn) RocketMQ?》

關(guān)于羅美琪和春波特的故事...》

《RocketMQ-Spring 畢業(yè)兩周年,為什么會(huì)變成? Spring 最受歡迎的生態(tài)學(xué) messaging 實(shí)現(xiàn)?》

通過(guò)這篇文章,你會(huì)知道:

Spring 新聞框架介紹

rocketmq-spring-boot 具體實(shí)現(xiàn)

使用示例

前言

上世紀(jì) 90 年底,隨之而來(lái) Java EE(Enterprise Edition) 出現(xiàn),特別是 Enterprise Java Beans 應(yīng)用程序需要復(fù)雜的描述符配置和復(fù)雜的代碼實(shí)現(xiàn),增加了許多開發(fā)者的學(xué)習(xí)曲線和開發(fā)成本,這是建立在簡(jiǎn)單基礎(chǔ)上的 XML 配置和一般 Java 目標(biāo)(Plain Old Java Objects)的 Spring 技術(shù)應(yīng)時(shí)而生,依賴注入(Dependency Injection), 控制反轉(zhuǎn)(Inversion of Control)并且面向切面編程(AOP)技術(shù)更敏捷地解決了傳統(tǒng)問(wèn)題 Java 公司和版本不足。

隨著 Spring 根據(jù)注釋的不斷演變,(Annotation)配置逐漸被取代 XML 文檔配備,2014 年 4 月 1 日,Spring Boot 1.0.0 正式發(fā)布,以“約定大于配置”為基礎(chǔ)(Convention over configuration)這個(gè)概念可以快速地開發(fā)、檢測(cè)、運(yùn)行和部署 Spring 應(yīng)用程序,并且可以簡(jiǎn)單地與各種啟動(dòng)器(例如 spring-boot-web-starter)結(jié)合起來(lái),讓應(yīng)用程序直接以命令行的形式運(yùn)行,不再需要部署到單個(gè)容器中。這是一個(gè)簡(jiǎn)單、直接、快速地構(gòu)建和開發(fā)應(yīng)用的過(guò)程,可以通過(guò)協(xié)議配置和簡(jiǎn)化布局,受到越來(lái)越多開發(fā)者的歡迎。

為了運(yùn)用 Spring Boot 快速發(fā)展,使用戶能更加靈活地使用。 RocketMQ 消息客戶端,Apache RocketMQ 社區(qū)推出了 spring-boot-starter 實(shí)現(xiàn)。伴隨著分布式事務(wù)消息功能 RocketMQ 4.3.0 最近版本發(fā)布,相關(guān)版本升級(jí)。 spring-boot 代碼,支持分布式事務(wù)的回查和通過(guò)注釋發(fā)送事務(wù)信息。

本論文將簡(jiǎn)要介紹當(dāng)前的設(shè)計(jì)實(shí)現(xiàn)情況,讀者可以通過(guò)本文了解到 RocketMQ Client 端集變成 spring-boot-starter 開發(fā)框架的細(xì)節(jié),然后通過(guò)一個(gè)簡(jiǎn)單的例子,一步一步地解釋如何使用這個(gè)例子。 spring-boot-starter 配備工具包,發(fā)送和消費(fèi) RocketMQ 消息。

Spring 里面的新聞框架

1. Spring Messaging

2. Spring Cloud Stream

Spring Cloud Stream 融合了 Spring Integration 注釋及功能,其應(yīng)用模型如下:

通過(guò)這種方式,開發(fā)者可以很容易地將不同類型的中間件應(yīng)用到相同的代碼中:只需在構(gòu)建過(guò)程中包含不同的內(nèi)容。 Binder。在更復(fù)雜的使用場(chǎng)景中,還可以在使用中包裝多個(gè)。 Binder 并且讓它自己選擇 Binder,甚至在運(yùn)行過(guò)程中使用不同的通道。 Binder。

spring-boot-starter的實(shí)現(xiàn)

1. spring-boot-starter 的實(shí)現(xiàn)步驟

對(duì)于一個(gè) spring-boot-starter 實(shí)現(xiàn)需要包括以下幾個(gè)方面:

1)在 pom.xml 的概念

定義最終會(huì)產(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,這個(gè) Bean 定義一組默認(rèn)屬性值。用戶正在使用最后一個(gè) starter 當(dāng)然,取值可以根據(jù)該類定義的屬性進(jìn)行修改,而不是直接修改該類配置,而是修改該類配置。 spring-boot 應(yīng)用中對(duì)應(yīng)的環(huán)境變量:src/main/resources/application.properties。

定義自動(dòng)加載類

定義 src/resources/META-INF/spring.factories 文件中的自動(dòng)加載類, 其目的是讓 spring boot 根據(jù)本文所指定的自動(dòng)配置類別,自動(dòng)初始化相關(guān) Bean、Component 或 Service,其內(nèi)容如下:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\org.apache.rocketmq.spring.starter.RocketMQAutoConfiguration

在 RocketMQAutoConfiguration 在類的具體實(shí)現(xiàn)中,對(duì)客戶直接使用的開放性定義 Bean 目標(biāo)包含:

RocketMQProperties 加載應(yīng)用特性環(huán)境變量的處理類;

RocketMQTemplate 發(fā)送方用戶發(fā)送消息的發(fā)送模板類;

四是最后具體進(jìn)行 RpcketMQ 有關(guān)的封裝

2. 實(shí)現(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 一些獨(dú)特的方法,如異步、單向和順序等,直接添加到其中 RoketMQTempalte 其中,這些方法直接被代理調(diào)用。 RocketMQ 的 Producer API 發(fā)送消息。

2)事務(wù)消息發(fā)送端

對(duì)事務(wù)消息的處理,在消息發(fā)送端進(jìn)行了部分?jǐn)U展,參照上面的調(diào)用關(guān)系類圖。

3. 實(shí)現(xiàn)消息消費(fèi)端

DefaultRocketMQListenerContainer 在器皿目標(biāo)中,器皿目標(biāo)將根據(jù)消費(fèi)方式(并發(fā)或順序)進(jìn)行, RocketMQListener 包裝到具體的 RocketMQ 實(shí)現(xiàn)內(nèi)部并發(fā)或順序接口。建立在容器中 RocketMQ Consumer 定制的目標(biāo)、啟動(dòng)和監(jiān)控 Topic 消息,如果有消費(fèi)消息,則回調(diào)至回調(diào)。 Listener 的 onMessage() 方法。

使用示例

上面一章已經(jīng)介紹過(guò)了 RocketMQ 在 spring-boot-starter 在這里,我們將通過(guò)一個(gè)最簡(jiǎn)單的消息發(fā)送和消費(fèi)的例子來(lái)介紹如何使這種方法。 rocketmq-spring-boot-starter。

1)啟動(dòng) NameServer 和 Broker

二是在實(shí)例中創(chuàng)建所需要的 Topics

執(zhí)行以下命令行操作,在執(zhí)行啟動(dòng)命令的目錄下執(zhí)行:

bash bin/mqadmin updateTopic -c DefaultCluster -t string-topic

2. 編譯 rocketmq-spring-boot-starter

目前的 spring-boot-starter 依賴于尚未提交的東西 Maven 核心數(shù)據(jù)庫(kù),用戶需要自行下載 git 源代碼,然后執(zhí)行 mvn clean install 安裝在當(dāng)?shù)貍}(cāng)庫(kù)。

git clone https://github.com/apache/rocketmq-externals.gitcd rocketmq-spring-boot-startermvn clean install

3. 編寫客戶端代碼

顧客若使用,則需在消息發(fā)布及消費(fèi)者端使用。 maven 環(huán)境變量 pom.xml 加入以下依賴:

特性 spring-boot-starter-rocketmq-version 的取值為:1.0.0-SNAPSHOT, 它與上一步安裝在本地倉(cāng)庫(kù)的版本一致。

1)消息發(fā)送端代碼

發(fā)送端環(huán)境變量 application.properties:

發(fā)送端 Java 代碼:

二是消息消費(fèi)端代碼

消費(fèi)環(huán)境變量 application.properties:

消費(fèi)端 Java 代碼:

在此簡(jiǎn)單介紹一下使用情況。 spring-boot 為了編寫最基本的信息發(fā)送和接收代碼,如果需要了解更多的調(diào)用方法,例如: 異步發(fā)送,目標(biāo)信息體,指定 tag 請(qǐng)參考標(biāo)簽和指定事務(wù)信息。 github 描述文檔和詳細(xì)代碼。這些高級(jí)功能將在后續(xù)陸續(xù)介紹。

  1. 聯(lián)系我們

  2. 在線客服:(9:00-23:00)
  3. 服務(wù)熱線:18761612306
  4. (9:00-23:00)
蘇ICP備2022034778號(hào)-2