最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot 3.x 整合 RocketMQ 5.x的詳細(xì)過程

 更新時間:2025年12月15日 09:37:01   作者:學(xué)亮編程手記  
本文介紹了如何在SpringBoot中使用RocketMQ 5.x客戶端,包括依賴配置、參數(shù)設(shè)置、生產(chǎn)者和消費(fèi)者的消息發(fā)送與接收示例以及服務(wù)端環(huán)境搭建,感興趣的朋友跟隨小編一起看看吧

RocketMQ 5.x在SpringBoot中的上手使用過程

注意:rocketmq-v5-client-spring-boot-starter對springboot版本有要求,至少2.0.6.RELEASE版本的springboot無法整合。

準(zhǔn)備環(huán)境

  • JDK 17
  • Spring Boot 3.2.3
  • RocketMQ(服務(wù)端) 5.3.1
  • rocketmq-v5-client-spring-boot-starter(客戶端) 2.3.1

在 SpringBoot 項目中依賴如下配置:

<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-v5-client-spring-boot-starter</artifactId>
    <version>2.3.1</version>
</dependency>

如果還未搭建服務(wù)端,可以先看第5節(jié)-服務(wù)器環(huán)境搭建

參數(shù)配置

按照 SpringBoot 的約定習(xí)俗,在上手一個新的 spring-boot-starter項目時,想要知道怎么使用它,看它的 AutoConfiguration 就對了。

rocketmq-v5-client-spring-boot中,對應(yīng)的 AutoConfiguration 類為 RocketMQAutoConfiguration,其類定義部分代碼如下:

@Configuration
@EnableConfigurationProperties(RocketMQProperties.class)
@Import({MessageConverterConfiguration.class, ListenerContainerConfiguration.class, ExtTemplateResetConfiguration.class,
        ExtConsumerResetConfiguration.class, RocketMQTransactionConfiguration.class, RocketMQListenerConfiguration.class})
@AutoConfigureAfter({MessageConverterConfiguration.class})
@AutoConfigureBefore({RocketMQTransactionConfiguration.class})
public class RocketMQAutoConfiguration implements ApplicationContextAware {
  	// ... 省略
    @Bean(PRODUCER_BUILDER_BEAN_NAME)
    @ConditionalOnMissingBean(ProducerBuilderImpl.class)
    @ConditionalOnProperty(prefix = "rocketmq", value = {"producer.endpoints"})
    public ProducerBuilder producerBuilder(RocketMQProperties rocketMQProperties) {
      // ... 省略
    }
    @Bean(SIMPLE_CONSUMER_BUILDER_BEAN_NAME)
    @ConditionalOnMissingBean(SimpleConsumerBuilder.class)
    @ConditionalOnProperty(prefix = "rocketmq", value = {"simple-consumer.endpoints"})
    public SimpleConsumerBuilder simpleConsumerBuilder(RocketMQProperties rocketMQProperties) {
       // ... 省略
    }
    @Bean(destroyMethod = "destroy")
    @Conditional(ProducerOrConsumerPropertyCondition.class)
    @ConditionalOnMissingBean(name = ROCKETMQ_TEMPLATE_DEFAULT_GLOBAL_NAME)
    public RocketMQClientTemplate rocketMQClientTemplate(RocketMQMessageConverter rocketMQMessageConverter) {
       // ... 省略
    }
}

可以發(fā)現(xiàn),在rocketmq-v5-client-spring-boot中,根據(jù) RocketMQ 5.x 在架構(gòu)上做的改進(jìn),使用了 endpoints 來替代傳統(tǒng)的 namesrvAddr,以支持更靈活的網(wǎng)絡(luò)拓?fù)浜驮圃軜?gòu)。endpoints 通常指向 RocketMQ 的 Broker 或 Nameserver 地址,用于生產(chǎn)者與 RocketMQ 集群建立連接。endpoints 是一個 URL 或 IP 地址(ip:host)列表(使用;分割)。

??注意:在 RocketMQ 5.x 中,現(xiàn)已默認(rèn)使用gRPC作為通信協(xié)議,entpoints更建議指向 Proxy 地址,一般默認(rèn)端口為8081。

因此,現(xiàn)在想要啟用默認(rèn)的生產(chǎn)者(ProducerBuilder),只需要配置rocketmq.producer.endpoints即可。

想要啟用默認(rèn)的消費(fèi)者(SimpleConsumerBuilder),只需要配置rocketmq.simple-consumer.endpoints即可。

RocketMQClientTemplate則是通過判斷當(dāng)前應(yīng)用上下文是否含有ProducerBuilderSimpleConsumerBuilder Bean對象生成而來。它屬于rocketmq-v5-client-spring-boot模塊下,也就是說它利用了Spring特性,提供了Spring風(fēng)格的API,方便開發(fā)者通過 Spring 的編程模型來進(jìn)行消息發(fā)送和接收。

既然是原生態(tài)的簡易使用教程,那么就盡可能在不寫多的代碼的情況下,實(shí)現(xiàn)生產(chǎn)環(huán)境中使用MQ。

因此,本次項目就只配置 rocketmq.producer.endpoints 用于啟用默認(rèn)的生產(chǎn)者,消費(fèi)者使用Push消費(fèi)模式,所以配置rocketmq.push-consumer.endpoints。配置如下:

rocketmq:
  producer:
    endpoints: localhost:8081
  push-consumer:
  	endpoints: localhost:8081

topic在代碼中指定,不使用rocketmq.producer.topicrocketmq.push-consumer.topic配置默認(rèn)的topic。

tips: 在啟動客戶端服務(wù)時,topic需要先創(chuàng)建,否則會啟動報錯。

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

生產(chǎn)消息通過SpringBoot自動裝配的RocketMQClientTemplate對象實(shí)現(xiàn),發(fā)送Message對象,示例代碼如下:

@Service
public class MyService {
  @Autowired
  private RocketMQClientTemplate rocketMQClientTemplate;
  public void sendMessage() {
      byte[] bytes = "這是一個字符串".getBytes(StandardCharsets.UTF_8);
      Message<byte[]> message = MessageBuilder.withPayload(bytes).build();
      rocketMQClientTemplate.send("MyTopic", message);
  }
}

??注意:在 RocketMQ 5.x 中,Message對象已從自定義對象改為spring-messaging包中的Message對象。一般通過MessageBuilder構(gòu)建,實(shí)例對象類型為GenericMessage

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

消費(fèi)者通過@RocketMQMessageListener注解,并實(shí)現(xiàn)RocketMQListener接口消費(fèi)消息,示例代碼如下:

@Service
@RocketMQMessageListener(consumerGroup = "MyTopic-service", topic = "MyTopic", tag = "*")
public class MyService implements RocketMQListener {
    @Override
    public ConsumeResult consume(MessageView messageView) {
        // 從 MessageView 中獲取 ByteBuffer
        ByteBuffer byteBuffer = messageView.getBody();
        // 轉(zhuǎn)換 ByteBuffer 為字節(jié)數(shù)組
        byte[] body = new byte[byteBuffer.remaining()];
        byteBuffer.get(body);
        // 處理字節(jié)數(shù)組,例如轉(zhuǎn)換為字符串
        String messageBody = new String(body, StandardCharsets.UTF_8);
        System.out.println("消費(fèi)消息內(nèi)容:" + messageBody);
     	 	return ConsumeResult.SUCCESS;
    }
}

服務(wù)端環(huán)境搭建

下載二進(jìn)制包

Apache RocketMQ 本地部署 RocketMQ 文檔中,可以找到最新的二進(jìn)制包,位置如下:

如果想保持跟本文相同版本,可以直接點(diǎn)擊鏈接下載RocketMQ 5.3.1版本。

啟動NameServer

#### 啟動namesrv
$ nohup sh bin/mqnamesrv &
#### 驗證namesrv是否啟動成功
$ tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...

本地模式啟動Broker+Proxy

#### 先啟動broker
$ nohup sh bin/mqbroker -n localhost:9876 --enable-proxy &
#### 驗證broker是否啟動成功, 比如, broker的ip是192.168.1.2 然后名字是broker-a
$ tail -f ~/logs/rocketmqlogs/proxy.log 
The broker[broker-a,192.169.1.2:10911] boot success...

mqbroker腳本默認(rèn)會讀取 conf/broker.conf 配置用于Broker服務(wù)。在 conf/rmq-proxy.json 中是Proxy服務(wù)的配置,通過 --enable-proxy 命令啟動時,需要加上 -pc conf/rmq-proxy.json 參數(shù)指定配置文件位置。

broker.conf的監(jiān)聽端口key為listenPort,管理端口key為brokerAdminPort。

rmq.proxy.json的gRPC請求端口key為grpcServerPort,傳統(tǒng)的消息發(fā)送和接收請求的端口key為remotingListenPort

  • 關(guān)閉服務(wù)
    • 停止Broker:sh bin/mqshutdown broker
    • 停止NameServer:sh bin/mqshutdown namesrv

關(guān)于RocketMQ的管理命令可以參考Admin Tool。

links:

RocketMQ 5.x在SpringBoot中的上手使用過程

到此這篇關(guān)于springboot 3.x 整合 RocketMQ 5.x的詳細(xì)過程的文章就介紹到這了,更多相關(guān)springboot 3.x 整合 RocketMQ內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Maven如何手動安裝依賴到本地倉庫

    Maven如何手動安裝依賴到本地倉庫

    這篇文章主要介紹了Maven如何手動安裝依賴到本地倉庫問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • springbean的八種加載方式匯總

    springbean的八種加載方式匯總

    這篇文章主要介紹了springbean的八種加載方式,一種是XML方式聲明bean,使用@Component及其衍生注解@Controller?、@Service、@Repository定義bean,還有其他方法,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • Java swing 圖像處理多種效果實(shí)現(xiàn)教程

    Java swing 圖像處理多種效果實(shí)現(xiàn)教程

    這篇文章主要介紹了Java swing 圖像處理多種效果實(shí)現(xiàn)教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • SpringBoot配置攔截器的示例

    SpringBoot配置攔截器的示例

    這篇文章主要介紹了SpringBoot配置攔截器的示例,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2020-11-11
  • 詳解Mybatis 傳遞參數(shù)類型為List的取值問題

    詳解Mybatis 傳遞參數(shù)類型為List的取值問題

    這篇文章主要介紹了詳解Mybatis 傳遞參數(shù)類型為List的取值問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Shiro 控制并發(fā)登錄人數(shù)限制及登錄踢出的實(shí)現(xiàn)代碼

    Shiro 控制并發(fā)登錄人數(shù)限制及登錄踢出的實(shí)現(xiàn)代碼

    本文通過shiro實(shí)現(xiàn)一個賬號只能同時一個人使用,本文重點(diǎn)給大家分享Shiro 控制并發(fā)登錄人數(shù)限制及登錄踢出的實(shí)現(xiàn)代碼,需要的朋友參考下吧
    2017-09-09
  • Java Condition條件變量提高線程通信效率

    Java Condition條件變量提高線程通信效率

    這篇文章主要介紹了Java Condition條件變量提高線程通信效率,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • 使用SpringBoot + Redis + Vue實(shí)現(xiàn)動態(tài)路由加載頁面的示例代碼

    使用SpringBoot + Redis + Vue實(shí)現(xiàn)動態(tài)路由加載頁面的示例代

    在現(xiàn)代 Web 應(yīng)用開發(fā)中,動態(tài)路由加載能夠顯著提升應(yīng)用的靈活性和安全性,本文將深入探討如何利用 Spring Boot、Redis、Element UI 和 Vue 技術(shù)棧實(shí)現(xiàn)動態(tài)路由加載,并通過 Redis 生成和驗證有效鏈接以實(shí)現(xiàn)頁面訪問控制,需要的朋友可以參考下
    2024-09-09
  • java實(shí)現(xiàn)幸運(yùn)抽獎功能

    java實(shí)現(xiàn)幸運(yùn)抽獎功能

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)幸運(yùn)抽獎功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • maven私有鏡像倉庫nexus部署使用

    maven私有鏡像倉庫nexus部署使用

    Nexus在企業(yè)開發(fā)中還是比較常用的私有倉庫管理工具,本文主要介紹了maven私有鏡像倉庫nexus部署使用,具有一定的參考價值,感興趣的可以了解一下
    2024-07-07

最新評論

阳曲县| 明星| 鄱阳县| 中卫市| 迁安市| 霍林郭勒市| 五台县| 甘南县| 自治县| 敦煌市| 历史| 三江| 达拉特旗| 同心县| 岳阳市| 北辰区| 青海省| 宣武区| 汤阴县| 故城县| 尚志市| 区。| 乡城县| 安龙县| 永川市| 城口县| 呈贡县| 尉氏县| 堆龙德庆县| 定边县| 霍城县| 油尖旺区| 伊宁县| 阿尔山市| 鲁山县| 大石桥市| 舟曲县| 淄博市| 新邵县| 新宁县| 红河县|