我们经常希望维持队列中的消息,按一定次序转发给消息者。然而当有多个JMS Session和消息消费者实例的从同一个队列中获取消息的时候,就不能保证消息顺序处理。因为消息被多个不同线程并发处理着。
在ActiveMQ4.x中可以采用Exclusive Consumer或者Exclusive Queues,避免这种情况,Broker会从消息队列中,一次发送消息给一个消息消费者来保证顺序。
配置如下:
queue = new ActiveMQQueue("TEST.QUEUE?consumer.exclusive=true");
consumer = session.createConsumer(queue);
A. 当在接收信息的时候有一个或者多个备份接收消息者和一个独占消息者的同时接收时候,无论两者创建先后,在接收的时候,均为独占消息者接收。
B. 当在接收信息的时候,有多个独占消费者的时候,只有一个独占消费者可以接收到消息。
C. 当有多个备份消息者和多个独占消费者的时候,当所有的独占消费者均close的时候,只有一个备份消费者接到到消息。
备注:备份消费者为不带任何参数的消费者。
本文介绍如何在ActiveMQ 4.x版本中通过设置独占消费者(Exclusive Consumer)实现消息队列中消息的顺序处理。包括不同类型的消费者在接收消息时的行为特性,以及在多个消费者同时存在的场景下,如何确保消息按预期顺序被处理。
&spm=1001.2101.3001.5002&articleId=8837901&d=1&t=3&u=36b1c92960fb4155bda17c5428c4be20)
502

被折叠的 条评论
为什么被折叠?



