本章重点
- 怎么使用独占式消费者
- 消息分组的威力
- 理解流和二进制大对象
- 容错传输
- 计划消息分发
简介
上一章我们介绍了 ActiveMQ 的代理特性,本章我们将学习 ActiveMQ 客户端的一些高级特性。我们将学习如何保证一个消费者可以从某个队列中接收到消息,而不管多少个消费者订阅了这个队列。这种特性我们称之为独占式消费者,可以用于消费者按顺序接收消息的场景或者分布式锁机制。接下来,我们将学习消息组,使用它消息会被分为多个组,而每个组都会被同一个消费者消费。ActiveMQ 支持两种不同的方式来发送体积较大的消息:使用流和使用二进制大对象消息,我们也会学习如何使用这两种方法。出现网络问题时,让应用保持正确运行是非常重要的,所以我们也会学习容错传输的细节。最后,我们会学习如何使用计划消息分发,以便带有延迟的发送消息。
本章中你可能想要了解的特性还有一个客户端消息确认的几种模式。在下一章我们将学习 ActiveMQ 性能调优,而选择一个合适的消息确认方式是获得良好性能的一个指标。所以本章我们也会介绍各种消息确认方式。
独占式消费者
使用场景:为了避免单点故障,所以对于一个队列的消息,你的应用有多个消费者进行消费,以防止一个消费者失败后应用就不再处理消息了。消息队列的概念就是消息先进先出,但是多个消费者消费消息时,接收消息顺序是正确的,但是处理消息的顺序却未必是正确的(鬼知道线程调度器先执行那个处理消息的代理)!为了保证消息能按顺序被处理,只能有一个消费者;但一个消费者又不能避免单点故障。所以,这个时候独占式消费者就应运而生了:一个队列可以有多个消费者,但仅仅只有一个消费者可以从队列中消费消息,这也就是说这个消费者给这个队列加锁了,如果这个消费者挂掉了,那么其他消费者就会上阵替补,但上阵替补的还是只有一个。