关于处理漏洞,rocketmq升级到最新版本的详细过程

下载及安装:

1、官网下载最新安装包:

下载 | RocketMQ

2、上传下载的安装包到对应服务器路径下解压:

[root@qgzmq01 data]# unzip rocketmq-all-5.2.0-bin-release.zip 
Archive:  rocketmq-all-5.2.0-bin-release.zip
  inflating: rocketmq-all-5.2.0-bin-release/LICENSE  
  inflating: rocketmq-all-5.2.0-bin-release/NOTICE  
  inflating: rocketmq-all-5.2.0-bin-release/README.md  
   creating: rocketmq-all-5.2.0-bin-release/benchmark/
  inflating: rocketmq-all-5.2.0-bin-release/benchmark/consumer.sh  
 ...
  inflating: rocketmq-all-5.2.0-bin-release/lib/jna-4.2.2.jar  
  inflating: rocketmq-all-5.2.0-bin-release/lib/opentelemetry-exporter-logging-otlp-1.29.0.jar  
  inflating: rocketmq-all-5.2.0-bin-release/lib/concurrentlinkedhashmap-lru-1.4.2.jar  
[root@qgzmq01 data]# 

3、进入到解压后的rocketmq的conf路径下

[root@qgzmq01 rocketmq-all-5.2.0-bin-release]# ll
总用量 56
drwxr-xr-x 2 root root   154 2月  11 19:25 benchmark
drwxr-xr-x 4 root root  4096 2月  11 17:53 bin
drwxr-xr-x 8 root root  4096 2月  11 19:25 conf
drwxr-xr-x 2 root root  8192 2月  11 19:25 lib
-rw-r--r-- 1 root root 17327 2月  11 17:53 LICENSE
-rw-r--r-- 1 root root  1338 2月  11 17:53 NOTICE
-rw-r--r-- 1 root root 12265 2月  11 17:53 README.md
[root@qgzmq01 rocketmq-all-5.2.0-bin-release]# cd conf

4、在 conf路径下创建一个broker.properties文件,内容如下(=后边为你运行mq服务器的ip):

brokerIP1=xxx.xx.x.xx   

5、进入bin路径下

停止原来版本的rocketmq服务,并启动新版本服务

1、查看当前rocketmq服务的运行情况

[root@qgzmq01 bin]# ps -ef |grep rocketmq
root      7520  7516  0 16:21 pts/2    00:00:00 sh /data/rocketmq-all-5.1.2-bin-release/bin/runserver.sh -Drmq.logback.configurationFile=/data/rocketmq-all-5.1.2-bin-release/conf/rmq.namesrv.logback.xml org.apache.rocketmq.namesrv.NamesrvStartup
root      7604  7520  1 16:21 pts/2    00:00:21 /bin/java -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:-UseParNewGC -verbose:gc -Xloggc:/dev/shm/rmq_srv_gc_%p_%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m -XX:-OmitStackTraceInFastThrow -XX:-UseLargePages -cp .:/data/rocketmq-all-5.1.2-bin-release/bin/../conf:/data/rocketmq-all-5.1.2-bin-release/bin/../lib/*: -Drmq.logback.configurationFile=/data/rocketmq-all-5.1.2-bin-release/conf/rmq.namesrv.logback.xml org.apache.rocketmq.namesrv.NamesrvStartup
root      9660 63650  0 16:22 pts/2    00:00:00 sh mqbroker -n 172.23.2.15:9876 -c /data/rocketmq-all-5.1.2-bin-release/conf/broker.properties
root      9664  9660  0 16:22 pts/2    00:00:00 sh /data/rocketmq-all-5.1.2-bin-release/bin/runbroker.sh -Drmq.logback.configurationFile=/data/rocketmq-all-5.1.2-bin-release/conf/rmq.broker.logback.xml org.apache.rocketmq.broker.BrokerStartup -n 172.23.2.15:9876 -c /data/rocketmq-all-5.1.2-bin-release/conf/broker.properties
root      9750  9664 14 16:22 pts/2    00:03:26 /bin/java -server -Xms8g -Xmx8g -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0 -verbose:gc -Xloggc:/dev/shm/rmq_srv_gc_%p_%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m -XX:-OmitStackTraceInFastThrow -XX:+AlwaysPreTouch -XX:MaxDirectMemorySize=15g -XX:-UseLargePages -XX:-UseBiasedLocking -Drocketmq.client.logUseSlf4j=true -cp .:/data/rocketmq-all-5.1.2-bin-release/bin/../conf:/data/rocketmq-all-5.1.2-bin-release/bin/../lib/*: -Drmq.logback.configurationFile=/data/rocketmq-all-5.1.2-bin-release/conf/rmq.broker.logback.xml org.apache.rocketmq.broker.BrokerStartup -n 172.23.2.15:9876 -c /data/rocketmq-all-5.1.2-bin-release/conf/broker.properties
root     50057 63650  0 16:46 pts/2    00:00:00 grep --color=auto rocketmq
[root@qgzmq01 bin]# 

2、发现运行的是5.1.2版本,使用如下两个命令,优雅的停掉当前运行的版本

[root@qgzmq01 bin]# sh mqshutdown namesrv
The mqnamesrv(7604) is running...
Send shutdown request to mqnamesrv(7604) OK
[root@qgzmq01 bin]# sh mqshutdown broker
The mqbroker(9750) is running...
Send shutdown request to mqbroker(9750) OK
[1]-  退出 143              nohup ./mqnamesrv(工作目录:/data/rocketmq-all-5.1.2-bin-release/bin)
(当前工作目录:/data/rocketmq-all-5.2.0-bin-release/bin)
[root@qgzmq01 bin]#

3、再次执行查看rocketmq运行情况,发现已正常停运

[root@qgzmq01 bin]# ps -ef |grep rocketmq
root     58485 63650  0 16:48 pts/2    00:00:00 grep --color=auto rocketmq
[root@qgzmq01 bin]# 

4、运行最新版本的rocketmq

###单机RocketMq启动:首先启动Name Server,
nohup ./mqnamesrv &
### 启动时,指定ip启动mq
nohup sh mqbroker -n xxx.xx.x.xx:9876 -c /data/rocketmq-all-5.2.0-bin-release/conf/broker.properties &

5、再次查看rocketmq是否正常启动

6、新版服务启动成功,旧版本文件夹可以备份后删除,然后去测试相关功能是否正常即可!

  • 14
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
RocketMQ的死信队列也叫做延迟消息队列。当一条消息在消费者消费时,如果消费失败,且消息设置了延迟时间,那么消息将会被放入延迟消息队列中,等待一定时间后再次发送。如果重试多次后仍然失败,则会被转移到死信队列中。 下面是处理RocketMQ死信队列的详细解决代码: 1. 创建死信队列 在RocketMQ中,需要先创建一个专门用于存储死信消息的队列。可以使用RocketMQ的管理工具或者API创建队列。 2. 设置消息消费失败的处理方式 在消费者消费消息时,需要设置消息消费失败的处理方式。可以使用RocketMQ提供的`MessageListenerConcurrently`或`MessageListenerOrderly`接口,并在`onConsumeMessage`或`onMessage`方法中处理消费失败的消息。 3. 设置消息的延迟时间 在生产者发送消息时,可以设置消息的延迟时间。如果消息在消费失败后仍然需要重新发送,那么消息将会被放入延迟消息队列中,等待一定时间后再次发送。可以使用`sendDelay`方法设置消息的延迟时间。 4. 处理死信队列中的消息 可以使用RocketMQ提供的`MessageListenerConcurrently`或`MessageListenerOrderly`接口,创建一个消费者来处理死信队列中的消息。在消费死信队列中的消息时,需要先将消息的Topic和Tag解析出来,然后根据业务逻辑进行处理。可以将无法处理的消息记录下来,并手动处理或丢弃。 下面是示例代码: ```java // 创建死信队列 MQAdmin admin = new DefaultMQAdminImpl(); admin.createTopic("DLQ_TOPIC", "DLQ_TOPIC", 1); // 设置消息消费失败的处理方式 DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("CONSUMER_GROUP"); consumer.subscribe("TOPIC", "TAG"); consumer.registerMessageListener(new MessageListenerConcurrently() { public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) { for (MessageExt msg : msgs) { try { // 消费消息 // 如果消费失败,则记录消息并返回 // 可以设置消息的延迟时间,让消息重新发送 } catch (Exception e) { // 记录消息到死信队列 MessageExt newMsg = new MessageExt(); newMsg.setTopic("DLQ_TOPIC"); newMsg.setTags(msg.getTags()); newMsg.setBody(msg.getBody()); newMsg.setKeys(msg.getKeys()); newMsg.setDelayTimeLevel(3); producer.send(newMsg); } } return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; } }); // 处理死信队列中的消息 DefaultMQPushConsumer dlqConsumer = new DefaultMQPushConsumer("DLQ_CONSUMER_GROUP"); dlqConsumer.subscribe("DLQ_TOPIC", "*"); dlqConsumer.registerMessageListener(new MessageListenerConcurrently() { public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) { for (MessageExt msg : msgs) { try { // 解析消息的Topic和Tag // 根据业务逻辑处理消息 } catch (Exception e) { // 记录消息,手动处理或丢弃 } } return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; } }); ``` 以上代码仅为示例代码,实际处理死信队列的代码需要根据业务逻辑进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值