rocketmq保证消息顺序,springboot整合rocketmq消费
00-1010I。创建Springboot项目,添加rocketmq依赖项II。配置RocketMQ III。创建一个新的控制器来发送消息。创建一个消费者来监控消息,消费消息v .启动服务测试,序列消息,如何发送和消费序列消息?程序需要确保发送和使用相同的队列。
rocketmq发送的消息默认进入多个消息队列,然后在消费端被多个线程消费,所以默认情况下,消息不是顺序消费的;有时候,我们需要按顺序消费一批消息,比如电商系统订单创建、支付、完成操作,都需要按顺序执行;
RocketMQTemplate为我们提供了SendOrderly方法(带有多个重载)来发送顺序消息;包括以下内容:
SyncSendOrderly,发送同步序列消息;
AsyncSendOrderly,发送异步顺序消息;
SendOneWayOrderly,发送单向顺序消息;
通常,我们使用syncSendOrderly方法来发送同步顺序消息。
参数1: topic如果要添加标签,可以写‘topic : tag’
参数2:消息内容
参数3: hashKey使用这个参数来选择队列。示例:订单Id、产品Id…
因为broker将管理多个消息队列,所以这个hashKey参数主要用于计算队列选择。一般可以用订单ID和产品ID作为参数值;发送到一个队列,方便得到一个顺序队列;而当消费者收到消息时,默认是并发多线程接收消息。
RocketMQMessageListener有一个属性consumeMode,默认为ConsumeMode.CONCURRENTLY,我们想把它改成ConsumeMode。有序,并按顺序接收单个线程中的消息;
下面介绍springboot rockermq的集成,实现顺序消息的发送和消费。
目录
!-rocket MQ Dependency-依赖groupIdorg.apache.rocketmq/groupId artifactidrocket MQ-Spring-Boot-Starter/artifactid version 2 . 2 . 1/version/Dependency
00-1010 #端口服务器3360端口3360 8083
#配置rocketmqrocketmq 3360 Name-Server 3360 127 . 0 . 0 . 133609876 # Producer Producer : #生产者组名,规定Group3360Group1 #消息发送超时在一个应用中必须唯一。默认值为3000毫秒发送消息超时3360 3000 #消息到达4090。默认为4096 compress-message-body-threshold 3360 4096 #最大消息限制,默认为128k max-message-size : 4194304 #。发送失败时的重试次数3360 3 #。当内部发送失败时,是否要重试其他代理?该参数仅在有多个代理时生效。Retry-next-server3360 true #异步消息发送失败的重试次数Retry-times-when-send-async-failed 3360 3
一、创建Springboot项目添加rockermq依赖
包com。举例。springbootrockedemo。控制器;导入org。阿帕奇。火箭MQ。春天。核心。火箭MQ模板;导入org。spring框架。豆子。工厂。注释。自动连线;导入org。spring框架。网络。绑定。注释。请求映射;导入org。spring框架。网络。绑定。注释。休息控制器;/** * 模拟两个订单发送消息* * 顺序信息的三种方式:同步、异步、单向* syncSendOrderly,发送同步顺序消息;* asyncSendOrderly,发送异步顺序消息;* sendOneWayOrderly,发送单向顺序消息;* 一般我们用第一种发送同步顺序消息;* @ author qzz */@ RestControllerpublic class RocketMQOrderCOntroller { @ auto wired private RocketMQTemplate RocketMQTemplate;/** * 发送同步顺序消息*/@请求映射(/testSyncOrderSend )public void testSyncSend(){//参数一:主题如果想添加标签,可以使用主题:标签的写法//参数二:消息内容//参数三:哈希基用来计算决定消息发送到哪个消息队列,一般是订单ID,产品身份等火箭MQ模板。syncsendsordered(测试主题有序, 111111创建,111111);火箭MQ模板。syncsendsordered(测试主题有序, 111111支付,111111);火箭MQ模板。syncsendsordered(测试主题有序, 111111完成,111111);火箭MQ模板。syncsendsordered(测试主题有序, 222222创建,222222);火箭MQ模板。syncsendsordered(测试主题有序, 222222支付,222222);火箭MQ模板。syncsendsordered(测试主题有序, 222222完成,222222);}}
二、配置rocketmq
包com。举例。springbootrockedemo。配置;导入org。阿帕奇。火箭MQ。春天。注释。消费模式;导入组织。阿帕奇。火箭MQ。春天。注释。rocket MQ messagelistener导入org。阿帕奇。火箭MQ。春天。核心。rocket MQ监听器;导入org。spring框架。刻板印象。服务;/** * 消费顺序消息* 配置消息队列监听* *消费模式。订购:顺序消费* @ author qzz */@ Service @ RocketMQMessageListener(consumer group= test ,topic= test-topic-ordered ,consumeMode=ConsumeMode .有序)公共类RocketMQCommonConsumerListener实现RocketMQListenerString { @ Override public void on message(String s){ system。出去。println(“消费者顺序消费,收到消息:的);}}
三、新建一个controller来做消息发送
测试成功!
到此这篇关于跳羚详细讲解消息队列实现顺序消息的发送与消费流程的文章就介绍到这了,更多相关跳羚顺序消息内容请搜索盛行信息技术以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行它!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。