springboot3.2/3.4+rocketmq5.3.3測試程序的基本例子

想測試下springboot新版中與rocketmq5.3.3的配置使用,今天嘗試了下,記錄如下:
1、首先springboot使用3.2.7,rocketmq使用5.3.3,且使用docker部署rocketmq。

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apache/rocketmq:5.3.3
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apache/rocketmq:5.3.3  docker.io/apache/rocketmq:5.3.3

創建網絡:

docker network create rocketmq

啟動rmqnamesrv

# 啟動NameServer
docker run -d --name rmqnamesrv -p 9876:9876 --net rocketmq apache/rocketmq:5.3.3 sh mqnamesrv

創建目錄并切換進去:

mkdir -p /myweb/rocketmq
cd /myweb/rocketmq

創建配置文件

echo -e "brokerIP1=192.168.15.10\nnamesrvAddr=192.168.15.10:9876\nautoCreateTopicEnable=true" > broker.conf

創建容器:

docker run -d \
--name rmqbroker \
--net rocketmq \
-p 10912:10912 -p 10911:10911 -p 10909:10909 \
-e "NAMESRV_ADDR=rmqnamesrv:9876" \
-v /myweb/rocketmq/broker.conf:/home/rocketmq/rocketmq-5.3.3/conf/broker.conf \
apache/rocketmq:5.3.3 sh mqbroker \
-c /home/rocketmq/rocketmq-5.3.3/conf/broker.conf

下面是可選:

# 啟動RocketMQ控制臺
docker exec -it rmqbroker bash
#創建topic
sh /home/rocketmq/rocketmq-5.3.3/bin/mqadmin updateTopic \
-n 192.168.15.10:9876 \
-c DefaultCluster \
-t test-topic

2、引入依賴,pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.rainpet</groupId><artifactId>rocketmq-demo01</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><name>rocketmq-demo01</name><url>http://maven.apache.org</url><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>3.2.10</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>2.0.17</version></dependency><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.3.3</version><exclusions><exclusion><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId></exclusion><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId><version>5.3.1</version><exclusions><exclusion><artifactId>slf4j-log4j12</artifactId><groupId>org.slf4j</groupId></exclusion></exclusions></dependency></dependencies>
</project>

3、配置文件:application.yml

spring:application:name: my-rocketmq-approcketmq:name-server: 192.168.15.10:9876producer:group: my-producer-groupsend-message-timeout: 3000retry-times: 3max-message-size: 1024000logging:level:root: info

4、消費者:MessageConsumer.java

package org.rainpet.service;import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;@Component
@RocketMQMessageListener(topic = "test-topic",consumerGroup = "my-consumer-group"
)
public class MessageConsumer implements RocketMQListener<String> {@Overridepublic void onMessage(String message) {System.out.println("收到消息:" + message);}
}

5、生產者工具類:

package org.rainpet.service;import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;@Component
public class MessageProducer {@Autowiredprivate RocketMQTemplate rocketMQTemplate;public void sendMessage(String topic, String message) {rocketMQTemplate.convertAndSend(topic, message);}public void sendMessageWithTag(String topic, String tag, String message) {rocketMQTemplate.convertAndSend(topic + ":" + tag, message);}
}

6、主啟動程序,app.java

package org.rainpet;import org.rainpet.service.MessageConsumer;
import org.rainpet.service.MessageProducer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class rocketMqApp
{public static void main( String[] args ) throws InterruptedException {var context = SpringApplication.run(rocketMqApp.class, args);MessageProducer messageProducer = context.getBean("messageProducer",MessageProducer.class);System.out.println("RocketMQ Producer is ready to send messages...");try {for (int i = 0; i < 10; i++) {messageProducer.sendMessage("test-topic", "Hello, RocketMQ! Message " + i);Thread.sleep(1000); // 休眠1秒}} catch (InterruptedException e) {Thread.currentThread().interrupt();System.err.println("消息發送被中斷: " + e.getMessage());} catch (Exception e) {System.err.println("發送消息時發生錯誤: " + e.getMessage());}}
}

7、其他
其實試了之后,切換springboot3.2/3.4,都可以。
其他問題:

Receiver class org.springframework.boot.logging.logback.RootLogLevelConfigurator does not define or inherit an implementation of the resolved method 'abstract void configure(ch.qos.logback.classic.LoggerContext)' of interface ch.qos.logback.classic.spi.Configurator.

這個主要原因就是日志框架沖突,pom中通過依賴的引入排除解決。
在這里插入圖片描述
②提示:

2025-07-01T16:45:20.557+08:00 ERROR 18000 --- [my-rocketmq-app] [           main] o.a.r.spring.core.RocketMQTemplate       : syncSend failed. destination:test-topic, message:GenericMessage [payload=byte[16], headers={contentType=text/plain;charset=UTF-8, id=0f5afc4b-c4e0-74f7-bbb1-f549ef414a17, timestamp=1751359520442}], detail exception info: org.apache.rocketmq.client.exception.MQClientException: No route info of this topic: test-topic

主要原因:
這個錯誤提示 “No route info of this topic: test-topic” 表示主題不存在或未創建。
問題解決:
確保在發送消息前創建主題。在RocketMQ控制臺或通過命令行創建主題。當然上面的代碼已經設置了:

autoCreateTopicEnable=true

也可以自動創建,不然就需要:

# 進入RocketMQ容器
docker exec -it rmqbroker bash# 創建主題
sh /home/rocketmq/rocketmq-5.3.3/bin/mqadmin updateTopic \
-n localhost:9876 \
-c DefaultCluster \
-t test-topic

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/89428.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/89428.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/89428.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入剖析AI大模型:TensorFlow

今天來聊一下TensorFlow&#xff0c;任何一門技術我建議還是從它出現的背景開始。因為你這就知道它存在的原因是什么。2015 年&#xff0c;Google 開源了深度學習框架 TensorFlow&#xff0c;一經推出便在學術界和工業界引起巨大反響。當時&#xff0c;深度學習模型的復雜度與日…

【數字后端】- tcbn28hpcplusbwp30p140,標準單元庫命名含義

tcbn28: 代表工藝類型是臺積電28nm工藝hpcplus: 代表工藝平臺是HPC BWP: 其中B代表標準單元的類型是 “standard” base cell&#xff1b;W代表N-well 工藝&#xff0c;放置在 P-substrate上&#xff1b;P表示該 cell 使用的是 P-type transistor layout orientation&#xff1…

KNN算法詳解及Scikit-learn API使用指南

一、KNN算法介紹 K最近鄰(K-Nearest Neighbor, KNN)算法是機器學習中最簡單、最直觀的分類算法之一。它既可以用于分類問題&#xff0c;也可以用于回歸問題。KNN是一種基于實例的學習(instance-based learning)或懶惰學習(lazy learning)算法&#xff0c;因為它不會從訓練數據…

【PMP】項目管理入門:從基礎到環境的體系化拆解

不少技術管理者都有過這樣的困惑&#xff1a; 明明按流程做了項目管理&#xff0c;結果還是延期、超預算&#xff1f;需求變更多到炸&#xff0c;到底是客戶無理還是自己沒管好&#xff1f;跨部門協作像“推皮球”&#xff0c;資源總不到位&#xff1f; 其實&#xff0c;項目失…

【Web前端】簡易輪播圖顯示(源代碼+解析+知識點)

一、簡易輪播圖源代碼 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>簡易輪播圖顯示</title><style type"text/css">*{margin: 0 auto;padding: 0;/* 全局重置邊距 */}p{text-align: center;fon…

電機試驗平臺的用途及實驗范圍

電機試驗平臺是一種專門設計用來對各種類型的電機進行測試和分析的設備。在現代工業中&#xff0c;電機作為驅動力的重要組成部分&#xff0c;在各個領域發揮著至關重要的作用。而為了確保電機的性能、效率和可靠性達到最佳水平&#xff0c;需要進行各種試驗和測試。電機試驗平…

自主/智能的本質內涵及其相互關系

論文地址&#xff1a;無人機的自主與智能控制 - 中國知網 (cnki.net) 自主/智能的本質內涵及其相互關系準則是無人機設計的基本原則。從一般意義上講。自主與智能是兩個不同范疇的概念。自主表達的是行為方式&#xff0c;由自身決策完成某行為則稱之為“自主”。“智能”…

nignx+Tomcat+NFS負載均衡加共享儲存服務腳本

本次使有4臺主機&#xff0c;系統均為centos7&#xff0c;1臺nignx&#xff0c;2臺tomcat&#xff0c;1臺nfs 第一臺配置nignx腳本 #!/bin/bash #xiexianghu 2025.6.24 #nignx配置腳本&#xff0c;centos7#關閉防火墻和SElinux systemctl stop firewalld && system…

zabbix監控Centos 服務器

1.2&#xff1a;本地安裝 先使用wget下載RPM安裝包 然后解壓安裝 >>wget https://repo.zabbix.com/zabbix/6.4/rhel/8/x86_64/zabbix-agent2-6.4.21-release1.el8.x86_64.rpm ##### CENTOS 8 使用這一條>>rpm -ivh zabbix-agent2-6.4.21-release1.el8.x86_64.r…

中科米堆三維掃描儀3D掃描壓力閥抄數設計

三維掃描技術正以數字化手段重塑傳統制造流程。以壓力閥這類精密流體控制元件為例&#xff0c;其內部流道結構的幾何精度直接影響設備運行穩定性與使用壽命。 在傳統設計模式下&#xff0c;壓力閥的逆向工程需經歷手工測繪、二維圖紙繪制、三維建模轉換等多個環節。技術人員需…

Python pytz 時區使用舉例

Python pytz 時區使用舉例 ? 一、Python代碼實現&#xff1a;時區轉換與時間比較 import pytz from datetime import datetime# 1. 獲取當前UTC時間 utc_now datetime.now(pytz.utc)# 2. 轉換為目標時區&#xff08;示例&#xff1a;上海和紐約&#xff09; shanghai_tz py…

vue中ref()和reactive()區別

好的&#xff0c;這是 Vue 3 中 ref() 和 reactive() 這兩個核心響應式 API 之間區別的詳細解釋。 簡單來說&#xff0c;它們是創建響應式數據的兩種方式&#xff0c;主要區別在于處理的數據類型和訪問數據的方式。 核心區別速查表 特性ref()reactive()適用類型? 任何類型 …

目標檢測數據集——交通信號燈紅綠燈檢測數據集

在智能交通系統迅速發展的背景下&#xff0c;準確且實時地識別交通信號燈的狀態對于提升道路安全和優化交通流量管理至關重要。 無論是自動駕駛汽車還是輔助駕駛技術&#xff0c;可靠地檢測并理解交通信號燈的指示——特別是紅燈與綠燈的區別——是確保交通安全、避免交通事故…

哪款即時通訊服務穩定性靠譜?18家對比

本文將深入對比18家 IM 服務商&#xff1a;1.網易云信; 2. 有度即時通; 3. 環信; 4. 小天互連; 5. 企達即時通訊; 6. 敏信即時通訊; 7. 360織語; 8. 容聯云通訊; 9. 云之訊 UCPaaS等。 在如今的數字化時代&#xff0c;即時通訊&#xff08;IM&#xff09;軟件已經成為企業日常運…

【Android】Flow學習及使用

目錄 前言基礎基本用法概念與核心特點Android中使用與LiveData對比熱流StateFlow、SharedFlow 搜索輸入流實現實時搜索 前言 ? Flow是kotlin協程庫中的一個重要組成部分&#xff0c;它可以按順序發送多個值&#xff0c;用于對異步數據流進行處理。所謂異步數據流就是連續的異…

idea常做的配置改動和常用插件

IDEA 使用 最強教程&#xff0c;不多不雜。基于idea旗艦版 2019.2.3左右的版本&#xff0c;大多數是windows的&#xff0c;少數是mac版的 一、必改配置 1、ctrl滾輪 調整字體大小 全局立即生效&#xff1a;settings -> Editor -> General -> Change font size with …

3. 物理信息神經網絡(PINNs)和偏微分方程(PDE),用物理定律約束神經網絡

導言&#xff1a;超越時間&#xff0c;擁抱空間 在前兩篇章中&#xff0c;我們已經走過了漫長而深刻的旅程。我們學會了用常微分方程&#xff08;ODE&#xff09;來描述事物如何隨時間演化&#xff0c;從一個初始狀態出發&#xff0c;描繪出一條獨一無二的生命軌跡。我們還學會…

Flutter基礎(基礎概念和方法)

概念比喻StatefulWidget會變魔術的電視機State電視機的小腦袋&#xff08;記信息&#xff09;build 方法電視機變身顯示新畫面setState按遙控器按鈕改變狀態Scaffold電視機的外殼 StatefulWidget&#xff1a;創建一個按鈕組件。State&#xff1a;保存點贊數&#xff08;比如 i…

K8s——Pod(1)

目錄 基本概念 ?一、Pod 的原理? ?二、Pod 的特性? ?三、Pod 的意義? 狀態碼詳解 ?一、Pod 核心狀態詳解? ?二、其他關鍵狀態標識? ?三、狀態碼運維要點? 探針 ?一、探針的核心原理? ?二、三大探針的特性與作用? ?參數詳解? ?三、探針的核心意義…

MySQL 存儲過程面試基礎知識總結

文章目錄 MySQL 存儲過程面試基礎知識總結一、存儲過程基礎&#xff08;一&#xff09;概述1.優點2.缺點 &#xff08;二&#xff09;創建與調用1.創建存儲過程2.調用存儲過程3.查看存儲過程4.修改存儲過程5.存儲過程權限管理 &#xff08;三&#xff09;參數1.輸入參數2.輸出參…