gpt4 book ai didi

java - 事务生产者 session 的确认模式

转载 作者:行者123 更新时间:2023-12-01 10:54:46 26 4
gpt4 key购买 nike

ActiveMQ 5.7.0/ JMS 1.1

我有一个关于确认模式的问题。我正在为制作人创建一个 session ,如下所示:

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

至于official documentation :

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.SESSION_TRANSACTED 模式?但我在我引用的官方文档中并没有看到该模式的规范。这是特定于供应商的吗?

最佳答案

实际上,Session.SESSION_TRANSACTED 在 JMS 的 API 文档中是正确的 Session 。尽管通常在创建事务处理 session 时在确认模式值中输入什么内容并不重要,因为提供程序通常会覆盖它,但使用事务处理值是一种很好的形式。

至于确认模式如何影响消息生产者,它不会,简短而甜蜜。在事务处理 session 中,您生成的消息在您提交之前不会由远程对等方发布到目标目的地,如果您回滚,它们就会丢失(可能是 DLQ)。生产者没有确认消息的机制,因此无需担心。

关于java - 事务生产者 session 的确认模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33672020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com