Spring boot 3 集成rocketmq-spring-boot-starter解决版本不一致问题

安装RocketMQ根据上篇文章使用Docker安装RocketMQ并启动之后,有个隐患详情见下文

Spring Boot集成

<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.2.3</version>
</dependency>
  • rocketmq还没有支持spring boot 3。

  • rocketmq自动转配的方式是spring boot 2的方式解决方法:使用spring boot 3自动装配方式,这个需要去了解stater的写法通过源码发现RocketMQAutoConfiguration是需要自动装配的所以在resource文件夹下创建METAINF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

    org.apache.rocketmq.spring.autoconfigure.RocketMQAutoConfiguration
    

RocketMQ连接失败

RocketMQ yml配置: 隐患就是name-service这里启动会报错连接失败,如果你使用的是腾讯云服务器并且使用官方docker命令部署RocketMQ,问题就出在docker 命令使用了--net=host此时服务器内9876端口并未开放使用firewall-cmd --add-port=7896/tcp --permanent,注意重启网卡以及腾讯云控制台端口开放。Tip:-pdocker默认会修改防火墙规则

rocketmq:name-server: ip:9876# 生产者producer:group: test_group# 消息发送超时时间send-message-timeout: 10000# 消息最大长度4Mmax-message-size: 4096# 消息发送失败重试次数retry-times-when-send-failed: 3# 异步消息发送失败重试次数retry-times-when-send-async-failed: 2# 消费者consumer:group: test_group# 每次提取的最大消息数pull-batch-size: 5

RocketMQ Broker连接失败

接下来在启动: 发现还是报错发现是RocketMQ Broker端口连接失败问题,参照如下解决

  1. 如果是docker单节点部署,应该有两个容器,进入rocketmq容器中找到broker.conf

    在这里插入图片描述

  2. 修改配置文件:只增加多出的配置,然后把这个配置文件复制出去重启这个容器

    brokerClusterName = DefaultCluster
    brokerName = broker-a
    brokerId = 0
    deleteWhen = 04
    fileReservedTime = 48
    brokerRole = ASYNC_MASTER
    flushDiskType = ASYNC_FLUSH
    brokerIP1=122.51.115.127
    namesrvAddr=122.51.115.127:9876;localhost:9876
    autoCreateTopicEnable=true
    
  3. 删除Broker容器,重新部署docker run -d --net=host --name=rocketmqBroker -v type=bind,source=/home/server/rocketmq,target=/home/rocketmq/store apache/rocketmq ./mqbroker -n localhost:9876 -C 配置文件路径配置文件路径是真实存在容器内的所以需要把配置文件放在映射的文件夹中

然后启动spring boot程序

发送/接收信息

接上文,这个类具有接收信息和发送信息,看以下类注释

@EnableAspectJAutoProxy
@EnableAsync
@EnableScheduling
@Slf4j
@Indexed
@SpringBootApplication
@EnableDiscoveryClient
@RestController
@Tag(name = "rocket测试控制器")
@RequiredArgsConstructor
//这个注解用于回调接收信息,你要接收那个TOPIC主题的信息,以及你所属哪个组
@RocketMQMessageListener(consumerGroup = "test_group",topic = TOPIC)
public class RocketMQApplication implements RocketMQListener<String> {public static final String TOPIC = "test_rocket";public static void main(String[] args) {try {//打开rockermq打印System.setProperty("rocketmq.client.logUseSlf4j", "true");SpringApplication.run(RocketMQApplication.class, args);log.info("项目启动成功(ง ˙o˙)ว");} catch (Exception e) {log.error("启动失败:",e);}}private final RocketMQTemplate rocketMQTemplate;@GetMapping("/send/msg")public String sendMsg1 (){try {Message<String> msg = MessageBuilder.withPayload("Hello,RocketMQ").build();//发送信息SendResult sendResult = rocketMQTemplate.syncSend(TOPIC, msg);log.error("发送结果 = {}",sendResult);} catch (Exception e) {e.printStackTrace();}return "OK" ;}@Overridepublic void onMessage(String message) {log.error("我是消费者 = {}",message);}
}

,请求接口,然后就会收到信息

在这里插入图片描述

RocketMQ运行机制图解

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/608549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在线表白网页制作源码,无需数据库,自带网站会员付费

源码介绍 通过在线表白&#xff0c;人们可以以一种浪漫的方式表达自己的感情&#xff0c;只需要填写一些基本信息&#xff0c;就能自动生成精美的表白页面。 为了增加网站的收入&#xff0c;用户可以购买网站会员&#xff0c;以使用指定的网页制作模板。 这个系统无需数据库…

计算机网络 —— 物理层

物理层 2.1 物理层的基本概念 物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流。 物理层为数据链路层屏蔽了各种传输媒体的差异&#xff0c;使数据链路层只需要考虑如何完成本层的协议和服务&#xff0c;而不必考虑网络具体的传输媒体是什么 2.2 物理层下…

pyqtgraph 教程

pyqtgraph 教程 简介 PyQtGraph 是一个用于科学和工程数据可视化的开源库&#xff0c;基于 PyQt 和 NumPy 构建而成。它提供了丰富的绘图工具和交互功能&#xff0c;可以用于创建高性能的实时数据图表、图像显示和信号处理应用。 以下是 PyQtGraph 的一些特点和功能&#xf…

python 多线程 守护线程

daemon线程&#xff1a;守护线程&#xff0c;优先级别最低&#xff0c;一般为其它线程提供服务。通常&#xff0c;daemon线程体是一个无限循环。如果所有的非daemon线程(主线程以及子线程&#xff09;都结束了&#xff0c;daemon线程自动就会终止。t.daemon 属性&#xff0c;设…

大模型机器人发展史:从VoxPoser、RT2到斯坦福Mobile ALOHA、Google机器人

前言 23年7月&#xff0c;我在朋友圈评估Google的RT2说道&#xff1a; “大模型正在革新一切领域啊&#xff0c;超帅&#xff0c;通过大模型不仅能理解“人话”&#xff0c;还能对“人话”进行推理&#xff0c;并转变为机器人能理解的指令&#xff0c;从而分阶段完成任务。回…

Hyperledger Fabric 权限策略和访问控制

访问控制是区块链网络十分重要的功能&#xff0c;负责控制某个身份在某个场景下是否允许采取某个操作&#xff08;如读写某个资源&#xff09;。 常见的访问控制模型包括强制访问控制&#xff08;Mandatory Access Control&#xff09;、自主访问控制&#xff08;Discretionar…

代码随想录算法训练营第21天 |530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先

530.二叉搜索树的最小绝对差 题目链接&#xff1a;530.二叉搜索树的最小绝对差 给你一棵所有节点为非负值的二叉搜索树&#xff0c;请你计算树中任意两节点的差的绝对值的最小值。 示例&#xff1a; 提示&#xff1a;树中至少有 2 个节点。 &#x1f4a1;解题思路 题目中…

UE5 将类修改目录

有个需求&#xff0c;需要修改ue里面类的位置&#xff0c;默认在Public类下面&#xff0c;我想创建一个二级目录&#xff0c;将所有的类分好位置&#xff0c;方便查看。 上图为创建一个类所在的默认位置。 接下来&#xff0c;将其移动到一个新的目录中。 首先在资源管理器中找…

Android - CrashHandler 全局异常捕获器

官网介绍如下&#xff1a;Thread.UncaughtExceptionHandler (Java Platform SE 8 ) 用于线程因未捕获异常而突然终止时调用的处理程序接口。当线程由于未捕获异常而即将终止时&#xff0c;Java虚拟机将使用thread . getuncaughtexceptionhandler()查询该线程的UncaughtExceptio…

模集 - 240105 - 模集期末速成

TAG - 模集、期末、速成 模集、期末、速成 模集、期末、速成 // – 高数帮 - 期末速成 – //阈值电压晶体管工作区及其判断方法电路公式//体效应沟长调制效应亚阈值效应…// – 阶段考核1 – //集成电路的优势与特点&#xff1a;体积小、速度快、功耗低、电路中以晶体管为主&a…

docker jenkins NB: JAVA_HOME should point to a JDK not a JRE

jenkins java编译错误&#xff1a; 3.5.4/conf/settings.xml The JAVA_HOME environment variable is not defined correctly This environment variable is needed to run this program NB: JAVA_HOME should point to a JDK not a JRE Build step ‘Invoke top-level Maven t…

软件测试|MySQL主键自增详解:实现高效标识与数据管理

简介 在MySQL数据库中&#xff0c;主键自增是一种常见的技术&#xff0c;用于自动为表中的主键字段生成唯一的递增值。本文将深入讨论MySQL主键自增的原理、用途、使用方法&#xff0c;以及在实践中的注意事项和最佳实践。 主键自增 主键自增的原理 主键自增是通过使用AUTO…

【PostgreSQL在线创建索引(CIC)功能的锁分析以及使用注意】

前一篇文章提到了普通创建索引会阻塞DML操作 PostgreSQL创建索引的锁分析和使用注意 而PostgreSQL里可以使用create index concurrently 在线创建索引(CIC)功能&#xff0c;降低创建索引在表上申请的锁的级别&#xff0c;ShareUpdateExclusiveLock级别的锁和RowExclusiveLock…

【Linux系统编程二十七】:线程的互斥与同步(互斥锁的使用与应用)

【Linux系统编程二十七】&#xff1a;线程的互斥与同步(互斥锁的使用与应用&#xff09; 一.问题:数据不一致(混乱/不安全)1.多线程并发计算不安全2.将数据加载到寄存器的本质 二.解决方法--互斥锁三.互斥锁的概念与接口1.定义锁2.加锁/解锁 四.互斥锁实现原理与应用1.原理&…

[redis] redis主从复制,哨兵模式和集群

一、redis的高可用 1.1 redis高可用的概念 在web服务器中&#xff0c;高可用是指服务器可以正常访问的时间&#xff0c;衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 高可用的计算公式是1-&#xff08;宕机时间&#xff09;/&#xff08;宕机时…

subversion httpd

通过http访问模式部署SVN的操作步骤如下&#xff1a; 步骤一&#xff1a;安装SVN 步骤二&#xff1a;安装Apache 步骤三&#xff1a;安装mod_dav_svn 步骤四&#xff1a;配置SVN 步骤五&#xff1a;配置Apache 步骤六&#xff1a;浏览器测试访问 步骤一&#xff1a;安装SVN 1.…

Linux网络配置概述

目录 一.查看网络配置 1.ifconfig 2.ip a 3.hostname 4.route 5.netstat和ss &#xff08;1&#xff09;netstat &#xff08;2&#xff09;ss &#xff08;3&#xff09;区别 6.ping 7.traceroute 8.nslookup 9.dig 二.网卡配置 三.域名解析配置文件 1.文件所…

GEE python登录重大更新—— ee.Initialize()初始验证过程更新

最近GEE python进行了更新,因此原始的登录代码将无法使用,所以这里我们看一下通常会报出的错误,这里需要我们将我们运行的projection具体的名称写入进去,也就是GEE中你再JavaScript界面中运行的项目名称,相较与之前我们需要进行验证码的copy,这里直接可以通过项目的写入来…

Linux限制用户可用硬盘空间

为了防止某个用户占用大量资源导致其他用户无法正常使用&#xff0c;一般会对单个用户可占用资源进行限制。就磁盘限额&#xff0c;XFS文件系统原生支持目录级别的限制。ext文件系统不支持目录限制&#xff0c;曲线方式是限制用户的总占用空间。 本文介绍使用quota程序限制用户…

模型评估:评估指标的局限性

“没有测量&#xff0c;就没有科学。”这是科学家门捷列夫的名言。在计算机科学特别是机器学习领域中&#xff0c;对模型的评估同样至关重要。只有选择与问题相匹配的评估方法&#xff0c;才能快速地发现模型选择或训练过程中出现的问题&#xff0c;迭代地对模型进行优化。模型…