中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用Spring-boot-starter標準改造項目內的RocketMQ客戶端組件

發布時間:2021-06-28 16:23:13 來源:億速云 閱讀:266 作者:chen 欄目:大數據

這篇文章主要講解了“怎么用Spring-boot-starter標準改造項目內的RocketMQ客戶端組件”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么用Spring-boot-starter標準改造項目內的RocketMQ客戶端組件”吧!

一、背景介紹

我們在使用Spring Cloud全家桶構建微服務應用時,經常能看到spring-boot-xxx-starter的依賴,像spring-boot-starter-web、spring-cloud-starter-feign、spring-boot-starter-test、mybatis-spring-boot-starter,仿佛只要帶上starter的東西,你就擁有了這個組件的一切,包括所有的配置,引用類都搞定了,這樣一個神奇的拿來就用的東西,是怎么實現的呢?我們自己能不能把自己的工具包做成一個starter?

二、Spring Boot Starter組件規范

  • 命名規范

groupId:這個標簽的命名沒做太多要求,基本上使用公司域名+項目名方式,如官方一般使用org.springframework.cloud,第三方一般用自己公司域名,如org.mybatis.spring.boot。 artifactId:這個標簽的命名Spring官方給了建議命名方式,Spring官方自己發布的組件,命名方式是spring-boot-starter-xxx,xxx表示組件名稱,像上文提及的spring-boot-starter-web和spring-cloud-starter-feign;第三方開發的組件,命名方式是xxx-spring-boot-starter,如mybatis-spring-boot-starter。

  • 工程規范

以maven工程為例,Spring Boot Starter用多模塊方式建立工程,工程內有autoconfigure模塊和starter模塊。 autoconfigure模塊為自動配置模塊,里面包含配置加載,全部的功能代碼實現及需要引用的jar包,負責對內功能實現,所有的代碼開發都在這個模塊中完成。 starter模塊提供自動配置模塊的依賴,里面沒有代碼,是個空jar包,只有對autoconfigure模塊的所有引用,是一個依賴集,它的目的是簡化使用該組件時的依賴,只要添加starter模塊,就能使用整個starter組件。

三、案例實戰

我們以常用的RocketMQ客戶端組件為例,搭建一個自己定義的starter,RocketMQ是由阿里巴巴團隊開發并捐贈給apache團隊的優秀消息中間件,承受過歷年雙十一大促的考驗。

  1. 創建一個Maven工程,增加兩個模塊rocketmq-spring-boot-autoconfigure和rocketmq-spring-boot-starter,這里使用的RocketMQ版本為4.5.2,主pom.xml節選如下:

<groupId>com.hy.demo</groupId>
<artifactId>rocketmq</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>

<modules>
	<module>rocketmq-spring-boot-autoconfigure</module>
	<module>rocketmq-spring-boot-starter</module>
</modules>

<dependencies>
	<dependency>
		<groupId>org.apache.commons</groupId>
		<artifactId>commons-lang3</artifactId>
		<version>3.3.2</version>
	</dependency>
	<dependency>
		<groupId>org.apache.rocketmq</groupId>
		<artifactId>rocketmq-client</artifactId>
		<version>4.5.2</version>
	</dependency>
	<dependency>
		<groupId>org.projectlombok</groupId>
		<artifactId>lombok</artifactId>
		<scope>provided</scope>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-context</artifactId>
		<version>5.1.8.RELEASE</version>
		<scope>compile</scope>
	</dependency>
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-api</artifactId>
	</dependency>
</dependencies>
  1. autoconfigure模塊開發 src目錄下添加相應的工具類,如注解,配置類,接口等,略 添加定位配置侯選類,在META-INF/目錄下新建spring.factories文件:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.hy.demo.rocketmq.MQConfig

Spring Boot會檢查你發布的jar中是否存在META-INF/spring.factories文件,自動配置類只能通過這種方式加載

  1. starter模塊開發 只需要修改pom.xml文件即可:

<parent>
	<artifactId>rocketmq</artifactId>
	<groupId>com.hy.demo</groupId>
	<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>rocketmq-spring-boot-starter</artifactId>

<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>com.hy.demo</groupId>
			<artifactId>rocketmq</artifactId>
			<version>1.0-SNAPSHOT</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

<dependencies>
	<dependency>
		<groupId>com.hy.demo</groupId>
		<artifactId>rocketmq-spring-boot-autoconfigure</artifactId>
		<version>1.0-SNAPSHOT</version>
	</dependency>
</dependencies>

在IDEA上對該工程進行編譯,打包,命令:

clean install -DskipTests=true

4、打包部署完成后,在應用模塊里添加該starter的依賴即可

<dependency>
   <groupId>com.hy.demo</groupId>
   <artifactId>rocketmq-spring-boot-starter</artifactId>
   <version>1.0-SNAPSHOT</version>
</dependency>

注:因為RocketMQ組件較為通用,目前提供基本的幾種發送和接收消息的方式,支持事務消息,文章內就不一一解釋代碼功能,附上此次源碼地址:

rocketmq-spring-boot-starter源碼示例

四、知識點梳理

  1. Spring的幾個注解: @Import用來整合所有在@Configuration注解中定義的Bean配置; @EventListener 事件監聽,里面寫的ContextStartedEvent,表示監聽Spring上下文啟動完成后的事件; @Configuration相當于xml的beans標簽; @Bean標注在方法上,等同于xml的bean;

  2. 自定義注解@MQConsumer和注解@MQTransactionProducer是如何起作用的? 工程里定義了com.hy.demo.rocketmq.config.RocketMQAnnotationScan類對這兩個注解進行掃描,利用注解@EventListener(ContextStartedEvent.class),監聽Spring上下文初始化事件,然后從Spring容器內讀取所有帶這兩個注解的類,把RocketMQ相關的配置信息加載進去,由于事務消息生產者類org.apache.rocketmq.client.producer.TransactionMQProducer的特殊性(它需要在初始化時注入TransactionListener監聽類,與應用模塊有一定耦合性),所以增加了一個Map集合存儲應用模塊內所有使用了@MQTransactionProducer注解的實例。

感謝各位的閱讀,以上就是“怎么用Spring-boot-starter標準改造項目內的RocketMQ客戶端組件”的內容了,經過本文的學習后,相信大家對怎么用Spring-boot-starter標準改造項目內的RocketMQ客戶端組件這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大悟县| SHOW| 贵港市| 宣武区| 隆尧县| 西丰县| 手游| 平乐县| 五河县| 竹山县| 北宁市| 夏河县| 南城县| 古蔺县| 平定县| 余干县| 大冶市| 金堂县| 措勤县| 黄陵县| 九龙城区| 呼伦贝尔市| 延吉市| 于田县| 济南市| 石台县| 突泉县| 大港区| 乐至县| 襄樊市| 新闻| 平果县| 云和县| 天峻县| 鄂州市| 红桥区| 沾化县| 吉林市| 沂南县| 榆林市| 西青区|