ActiveMQ Exclusive Consumer#
ActiveMQ的独占消费(Exclusive Consumer)#
我们经常希望维持队列中的消息,按一定次序转发给消息者。然而当有多个JMS Session和消息消费者实例的从同一个队列中获取消息的时候,就不能保证消息顺序处理。因为消息被多个不同线程并发处理着。
在ActiveMQ4.x中可以采用Exclusive Consumer或者Exclusive Queues,避免这种情况,Broker会从消息队列中,一次发送消息给一个消息消费者来保证顺序。
配置如下:
queue = new ActiveMQQueue("TEST.QUEUE?consumer.exclusive=true");
consumer = session.createConsumer(queue);
在接收信息时,有一个或者多个备份接收消息者和一个独占消息者的同时接收时候,无论两者创建先后,在接收时,均为独占消息者接收。
在接收信息时,有多个独占消费者时,只有一个独占消费者可以接收到消息。
当有多个备份消息者和多个独占消费者时,当所有的独占消费者均close时,只有一个备份消费者接收到消息。
备注:备份消费者为不带任何参数的消费者。