rocketmq怎么发送消息可参考我的上一篇博客:rocketmq发送第一条消息。此处我们讲解如何发送rocketmq顺序消息

producer

public class ProducerOrder {public static void main(String[] args) throws Exception {DefaultMQProducer producer = new DefaultMQProducer("testGrp");// 设置nameserver地址  nameserver具备路由功能(发现服务,有点注册中心的意思),让其分配合理的broker来进行消息发送producer.setNamesrvAddr("192.168.52.11:9876");try {producer.start();} catch (MQClientException e) {e.printStackTrace();}for (int i = 0; i < 20; i++) {Message message = new Message("monkeyOrderMsgTopic", ("这是顺序消息:" + i).getBytes());producer.send(message,// 自定义选择Queuenew MessageQueueSelector() {/**** @param list 当前topic里所有的queue* @param message 要发送的消息* @param o 对应到 send() 里的 args参数* @return*/@Overridepublic MessageQueue select(List<MessageQueue> list, Message message, Object o) {// 根据传入的参数决定QueueMessageQueue messageQueue = list.get((Integer)o);return messageQueue;}}, 0, 3000);}System.out.println("发送完成");}
}

consumer

public class ConsumerOrder {public static void main(String[] args) throws Exception {DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("testConsumerOrder");consumer.setNamesrvAddr("192.168.52.11:9876");consumer.subscribe("monkeyOrderMsgTopic","*");consumer.registerMessageListener(new MessageListenerOrderly() {@Overridepublic ConsumeOrderlyStatus consumeMessage(List<MessageExt> list, ConsumeOrderlyContext consumeOrderlyContext) {for (MessageExt messageExt : list) {System.out.println(new String(messageExt.getBody()) + "current Thread:" + Thread.currentThread().getName());}return ConsumeOrderlyStatus.SUCCESS;}});consumer.start();System.out.println("consumer start .....");}}

测试结果:

总结:

你们应该如何保证消息的顺序?

  • 同一topic

  • 同一个QUEUE

  • 发消息的时候一个线程去发送消息

  • 消费的时候 一个线程 消费一个queue里的消息或者使用MessageListenerOrderly

  • 多个queue 只能保证单个queue里的顺序

rocketmq发送顺序消息(四)相关推荐

  1. RocketMq发送延迟消息

    什么是延迟消息? 对于消息中间件来说,producer将消息发送到mq的服务器,但并不期望这条消息马上被消费,而是推迟到当前时间点之后的某个时间点后再投递到queue中让consumer进行消费,延迟 ...

  2. RocketMQ发送延迟消息时报错,发送同步消息却正常

    延时消息代码如下: Message<Mdds> message = MessageBuilder.withPayload(mdds).build(); // 延迟第3级发送(延迟10秒) ...

  3. rocketMq发送事务消息

    事务消费 我们经常支付宝转账余额宝,这是日常生活的一件普通小事,但是我们思考支付宝扣除转账的钱之后,如果系统挂掉怎么办,这时余额宝账户并没有增加相应的金额,数据就会出现不一致状况了. 上述场景在各个类 ...

  4. RocketMQ(九)RocketMQ顺序消息

    目录 一.什么是顺序消息? 二.顺序消息的原理 三.全局顺序消息 四.局部顺序消息 五.顺序消息缺陷 一.什么是顺序消息? 消息有序指的是,消费者端消费消息时,需按照消息的发送顺序来消费,即先发送的消 ...

  5. RocketMQ - 6 生产者,顺序消息

    Producer类型 Producer主要职能就是生产消息,发送消息.它可以对多个主题发送消息,甚至可以通过Tag定义些简单的过滤.更复杂的过滤可以使用filter组件来进行相应的业务操作 Rocke ...

  6. RocketMQ 发送消息的基本案例

    RocketMQ 消息发送的基本样例 "一发.一存.一消费" 是消息中间件的本质,本文简单的记录来RocketMQ消息的基本样例,包含消息的发送(同步消息/异步消息/单向消息).消 ...

  7. 聊一聊顺序消息(RocketMQ顺序消息的实现机制)

    本文来自:https://www.cnblogs.com/hzmark/p/orderly_message.html 当我们说顺序时,我们在说什么? 日常思维中,顺序大部分情况会和时间关联起来,即时间 ...

  8. 消息中间件学习总结(10)——Kafka、RabbitMQ、RocketMQ消息中间件的消息发送性能对比

    引言 分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦.现在开源的消息中间件有很多,前段时间我们自家的产品 RocketMQ (MetaQ的内核) 也顺利开源,得到大家的关注. ...

  9. RocketMQ——顺序消息

    消息有序指的是可以按照消息的发送顺序来消费. RocketMQ可以严格的保证消息有序.但这个顺序,不是全局顺序,只是分区(queue)顺序.要全局顺序只能一个分区. 之所以出现你这个场景看起来不是顺序 ...

最新文章

  1. Window10下Ubuntu20.04子系统下安装cuda
  2. linux系统查看当前安装字库,linux下怎样安装中文字体?
  3. apache php的日志在哪里,PHP在哪里存储错误日志? (php5,apache,fastcgi,cpanel)...
  4. 红黑树分为红和黑有什么好处_30 张图带你彻底理解红黑树
  5. vue项目打包:npm run build 进程卡死
  6. Redmi游戏手机即将登场:天玑1200加持 主打极致性价比
  7. css3直线运动_CSS3中如何使元素曲线运动
  8. 百度前端学院-基础学院-第二课
  9. dedecms怎么改php版本_php.ini配置中有3处设置不当会使网站存在安全问题
  10. [渝粤教育] 广东-国家-开放大学 21秋期末考试国际私法10216k1
  11. JFinal Template Engine 使用
  12. Tkinter模拟发送邮箱验证码并在指定时间后验证码过期
  13. eplan步进电机_数控床子里电机用步进电机好还是伺服电机好?-工业支持中心-西门子中国...
  14. zabbix详解(感觉作者写的有点乱,但是很详细,所以转载下来,用过zabbix一段时间后复习用)
  15. 基于ZigBee设计的天气监测系统
  16. java 行政区划数据库_Java学习-056-Jsoup爬虫获取中国所有的三级行政区划数据(一)...
  17. 图像处理基本方法-perl语言生成纯色BMP文件
  18. java实现deflate数据压缩和gzip数据压缩
  19. 服务器被劫持怎么修复不了,电脑DNS被劫持怎么修复?电脑dns被劫持的完美解决方法...
  20. 如何成为一个更好的程序员,或者说是学习者?给你七个建议!

热门文章

  1. 会计记忆总结之七:财产清查
  2. 数据分析常用功能:巧用门户制作功能,让多个报表一览无余
  3. 暑假旅游小高峰,旅游行业都在烧钱赚人气
  4. python面向对象的三个基本特征 含义和作用简介_面向对象语言的三个基本特征各自特点及优势...
  5. kafka同一个group 消费两个topic吗_MQ: 一张图读懂kafka工作原理
  6. PHP匹配函数怎么用,php preg_match_all函数怎么用
  7. 从0搭建一个Springboot+vue前后端分离项目(四)利用Element框架搭建页面主体部分表格与侧边栏
  8. CTF--misc 零宽度字符隐写
  9. Python面向对象中:__init__() 构造方法
  10. python基础教程:懒惰属性(延迟初始化)