rocketmq问题汇总-如何将特定消息发送至特定queue,消费者从特定queue消费
来源:互联网 发布:使命召唤11优化怎么样 编辑:程序博客网 时间:2024/05/20 02:55
业务描述
由于业务需要这样一种场景,将消息按照id(业务id)尾号发送到对应的queue中,并启动10个消费者(单jvm,10个消费者组),从对应的queue中集群消费,如下图1所示(假设有两个broker组成的集群):
producer如何实现
producer只需发送消息时调用如下方法即可
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
关键是如何实现MessageQueueSelector:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
这样,所有的消息会根据消息的尾号,轮询的落到相应的queue上。参考图2,假设id=10001231,由于一共有20个queue,所以10001231%20=11,故消息会落到broker-b queue-1上。
consumer端如何实现
针对consumer由于没有限制是顺序消费,故可以采用集群消费模式的DefaultMQPushConsumer,由于一个消费者消费一类queue,故需要10个consumer group,比如consumer group0需要消费的queue为broker-a queue-0和broker-b queue-0,如下图的概示:
那么需要自己实现一个AllocateMessageQueueStrategy进行queue的分配,我们假设consumer group的名字格式需要提前定好,如xxx{queueid}ConsumerGroup,那么实现如下:- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
借助AllocateMessageQueueAveragely来实现,以便有多个jvm的消费者时,能够进行集群消费,但是针对上面这个例子,消费者jvm实例不能超过2个,至于为什么,参照下图:
阅读全文
0 0
- rocketmq问题汇总-如何将特定消息发送至特定queue,消费者从特定queue消费
- rocketmq问题汇总-如何将特定消息发送至特定queue,消费者从特定queue消费
- 如何将特定文件类型高亮显示
- mq 使用Spring发送,消费topic和queue消息
- ActiveMQ发送queue消息
- 如何将网卡中断绑定到特定cpu?
- 如何将unity的project中的特定文件打包
- 如何从jar包中检索特定规则的代码
- Oracle如何实现从特定组合中随机读取值
- 如何从bufferreader reader.readline() 获取特定编码的字符串
- 正则表达式-如何从一个字符串中拿到特定内容
- Oracle如何实现从特定组合中随机读取值
- 如何从对象里面取出特定字段的数据
- DataTable如何删除特定行
- 特定问题与通用方案
- 向某个特定线程发送信号
- ActiveMQ5.0实战三:使用Spring发送,消费topic和queue消息
- ActiveMQ5.0实战三:使用Spring发送,消费topic和queue消息
- java 工程师成神之路拆接(0)
- yum安装openjdk出现No more mirrors to try问题解决
- IDEA配置SVN(一)
- 关于写java web项目一些问题
- 2017 Summer Training Day1
- rocketmq问题汇总-如何将特定消息发送至特定queue,消费者从特定queue消费
- poj 2752 (summerIII seek the name,seek the fame)
- Angular4+NodeJs+MySQL 入门-05 接口调用
- 1007. 素数对猜想 (20)
- activemq 消息选择器Selector
- HDFS是什么?HDFS适合做什么?我们应该怎样操作HDFS系统?
- 【自学PHP】第二课:PHP数据类型
- flask笔记
- 字符串处理(4)——字符串常用操作(字符串链接,比较,截取,查找,大小转换,内容替换,获取某位置的字符)