5.1ActiveMQ是如何存储消息的?

获得一些在ActiveMQ消息仓库中的消息的存储原理的基础知识是重要的。它会帮助你做配置和提供对在持久化消息传输过程中在ActiveMQ代理中发生了什么一个认识。被发送到队列和主题的消息是被不同地存储的,因为有一些优化可能发生在主题模式而对队列没有意义,如我们将介绍的那样。
对队列的存储是直截了当的--消息主要被先进先出地存储。看图5.1对此的描述(图略)。某时一条消息被调度到单个消费者。只有当消息被消费并答复时才会从代理消息仓库中删除。
对于一个主题的持久订阅者,每个消费者获取一条消息的拷贝。为了节省存储空间,只有消息的一个拷贝被代理存储。存储中的一个持久订阅者对象维护一个指向它的下一个存储消息的指针并分派它的一个拷贝到它的消费者,如图5.2所示。消息仓库以这种方式实现因为每一个持有订阅者可能以不同的速度消费消息,或者同一时间它们可能不都在运行。同时,因为每个消息可能潜在的有多个消费者,一条消息不能被仓库删除知道它被成功地传递到每个对它感兴趣的持久订阅者。
ActiveMQ的每个消息仓库实现都支持队列和主题的消息存储,虽然存储类型间显然实现不相同。例如,内存仓库在内存中保存所有消息。
贯穿剩余章节的是,详细介绍关于配置ActiveMQ不同的消息仓库和他们的优缺点。

猜你喜欢

转载自flxchy4.iteye.com/blog/1695353
今日推荐