温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ActiveMQ(十二)——Consumer高级特性

发布时间:2020-07-16 20:03:24 来源:网络 阅读:487 作者:mazongfei 栏目:编程语言

一、独有消费者
    Queue中的消息是按照顺序被分发到consumers的,然而,当有多个consumers同时从相同的queue中提取消息时,你将失去这个保证。因为这些消息是被多个多线程并发的处理。有的时候,保证消息按照顺序处理是很重要的,但是你可能不希望在插入订单操作结束之前执行更新这个订单的操作。
    ActiveMQ从4.x版本起开始支持Exclusive Consumer。Broker会从多
个consumers中挑选一个consumer来处理queue中所有的消息,从而保证消息的有序处理。如果这个consumer失效,那么broker会自动切换到其他的consumer。可以通过Destination Options来创建一个Exclusive Consumer,如下:
    queue = new ActiveMQ(“TEST.QUEUE?Consumer.exclusive=true”);
    Consumer = session.createConsumer(queue);
    还可以给consumer设置优先级,以便针对网络情况进行优化,如下:

queue = new ActiveMQQueue(“TEST.QUEUE?Consumer.exclusive=true
&consumer.priority=10”);

二、消息异步分发
ActiveMQ(十二)——Consumer高级特性
三、消息优先级
ActiveMQ(十二)——Consumer高级特性
三、管理持久化消息
ActiveMQ(十二)——Consumer高级特性
四、消息分组
    消息分组可以看成是一种并发的Exclusive Consumer。跟所有的消息都由唯一的consumer处理不同,JMS消息属性JMSXGroupID被用来区分message group。
Message Groups特性保证所有具有相同JMSXGroupID的消息会被分发到相同的consumer(只要这个consumer保持active)
    另一方面,消息分组特性也是一种负载均衡的机制。在一个消息被分发到consumer之前,broker首先检查消息JMSXGroupID属性。如果存在,那么broker会检查是否有某个consumer拥有这个message group。
    如果没有,那么broker会选择一个consumer,并将它关联到这个message group。此后,这个consumer会接收这个message group的所有消息,直到:
ActiveMQ(十二)——Consumer高级特性

  • 创建一个Message Groups,只需要在message对象上设置属性即可,如下:
    message.setStringProperty("JMSXGroupID","GroupA");

  • 关闭一个Message Groups,只需要在message对象上设置属性即可,如下:
    message.setStringProperty("JMSXGroupID","GroupA");
    Message.setIntProperty("JMSXGroupSeq",-1);
    六、消息选择器
    ActiveMQ(十二)——Consumer高级特性
    七、消息重递策略
    ActiveMQ(十二)——Consumer高级特性
    ActiveMQ(十二)——Consumer高级特性
    ActiveMQ(十二)——Consumer高级特性
    八、消费者追溯消息
    ActiveMQ(十二)——Consumer高级特性
    九、慢消费者处理
    ActiveMQ(十二)——Consumer高级特性
    ActiveMQ(十二)——Consumer高级特性
    ActiveMQ(十二)——Consumer高级特性
    ActiveMQ(十二)——Consumer高级特性
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI