想测试下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.输出参…