交易生产者会话的确认模式
Acknowledgment mode for transacted producer's session
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
In auto-acknowledge mode, the Message Queue client runtime immediately
sends a client acknowledgment for each message it delivers to the
message consumer
所以确认模式是关于将消息传递给生产者的。如果我打算将会话用于 仅发送 消息,我应该在那里指定什么?也许我应该指定 Session.SESSION_TRANSACTED
模式?但是我在我引用的官方文档中没有看到模式的规范。这是特定于供应商的吗?
实际上 Session.SESSION_TRANSACTED 就在 JMS Session 的 API 文档中。虽然通常在创建事务处理会话时将什么放入确认模式值并不重要,因为提供程序通常会覆盖它,但使用事务处理值是一种很好的形式。
至于确认模式如何影响消息生产者,它不会,简短而甜蜜。在事务处理会话中,在您提交之前,您生成的消息不会被远程对等方发布到目标位置,如果您回滚,它们就会丢失(可能是 DLQ)。生产者没有确认消息的机制,所以不用担心。
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
In auto-acknowledge mode, the Message Queue client runtime immediately sends a client acknowledgment for each message it delivers to the message consumer
所以确认模式是关于将消息传递给生产者的。如果我打算将会话用于 仅发送 消息,我应该在那里指定什么?也许我应该指定 Session.SESSION_TRANSACTED
模式?但是我在我引用的官方文档中没有看到模式的规范。这是特定于供应商的吗?
实际上 Session.SESSION_TRANSACTED 就在 JMS Session 的 API 文档中。虽然通常在创建事务处理会话时将什么放入确认模式值并不重要,因为提供程序通常会覆盖它,但使用事务处理值是一种很好的形式。
至于确认模式如何影响消息生产者,它不会,简短而甜蜜。在事务处理会话中,在您提交之前,您生成的消息不会被远程对等方发布到目标位置,如果您回滚,它们就会丢失(可能是 DLQ)。生产者没有确认消息的机制,所以不用担心。