ActiveMQ 5.7.0/ JMS 1.1
我有一个关于确认模式的问题。我按如下方式为制作人创建会话:
ConnectionFactory connectionFactory;
Queue testQueue
//init connectionFactory, testQueue
Connection c = connectionFactory.createConnection();
c.start();
Session s = c.createSession(true, Session.AUTO_ACKNOWLEDGE); // <----- What does it mean?
MessageProducer mp = s.createProducer(testQueue);
mp.setDeliveryMode(DeliveryMode.PERSISTENT);
//sending messages
在自动确认模式下,立即显示Message Queue客户端运行时 向 提供 的每封邮件发送客户确认 消息消费者
因此确认模式是关于向生产者传递消息。如果我要将会话用于 仅发送 消息,我应该在那里指定什么?也许我应该指定Session.SESSION_TRANSACTED
模式?但我没有在我引用的官方文档中看到该模式的规范。这是供应商特定的吗?
答案 0 :(得分:1)
实际上,Session.SESSION_TRANSACTED在JMS Session的API文档中是正确的。虽然在创建事务处理会话时通常并不重要,因为提供商通常会覆盖它,但是使用交易价值是一种很好的形式。
就确认模式如何影响消息生成者而言,它并不简短而且甜蜜。在事务会话中,您生成的消息不会被远程对等方发布到目标目标,直到您提交为止,如果您回滚它们将丢失(可能是DLQ&#39; d)。制作人没有机制来回复消息,所以不用担心。