ActiveMQ(四)
由于项目原因,很长时间没有更新了。今天本篇主要解释一些名词,为下一步的ActiveMQ的Queue使用奠定基础
在开始演示前先引入一些概念:
Q:ActiveMQ Queue中有哪些消息交互模式(传送模式)?
A:ActiveMQ遵循JMS标准分为:
1.PERSISTENT(持久性消息)
这是 ActiveMQ 的默认传送模式,此模式保证这些消息只被传送一次和成功使用一次。对于这些消息,可靠性是优先考虑的因素。可靠性的另一个重要方面是确保持久性消息传送至目标后,消息服务在向消费者传送它们之前不会丢失这些消息。这意味着在持久性消息传送至目标时,消息服务将其放入持久性数据存储。如果消息服务由于某种原因导致失败,它可以恢复此消息并将此消息传送至相应的消费者。虽然这样增加了消息传送的开销,但却增加了可靠性。
2.NON_PERSISTENT(非持久性消息)
保证这些消息最多被传送一次。对于这些消息,可靠性并非主要的考虑因素。 此模式并不要求持久性的数据存储,也不保证消息服务由于某种原因导致失败后消息不会丢失。
Q:如何设置消息交互模式(传送模式)?
A:在ActiveMQ中有2种方法来设置,分别适用于不同的场景。我更偏向于第一种处理方式,有利于消息的封装和统计。
1.在消息生产者中直接设置模式,
producer.setDeliveryMode(int deliveryMode);
此模式的适用于单一类型的消息生产者。
2.在每条消息中设置,
void send(Destination destination, Message message, int deliveryMode, int priority,long timeToLive);
void send(Message message, int deliveryMode, int priority, longtimeToLive);
其中 deliveryMode 为传送模式,priority 为消息优先级,timeToLive 为消息过期时间。
Q:想要使用自定义的Queue来管理消息,该如何做?
A:继承ActiveMQDestination并实现Queue(javax.jms包)接口