【发布时间】:2011-02-28 19:16:49
【问题描述】:
规范说“确认已消费的消息会自动确认已收到其会话已交付的所有消息”-但我需要知道的是“已交付”的含义。
例如,如果我调用 consumer.receive() 6 次,然后在第三条消息上调用 .acknowledge - 是 (a) 只是前 3 条消息被确认,还是 (b) 全部 6 条?
我真的希望它是选项 a,即在您调用确认之后的消息将被重新传递,否则很难看到在我的接收器进程崩溃的情况下如何防止消息丢失有机会坚持和确认消息。但是该规范的措辞尚不清楚。我的印象是 JMS 规范的作者认为代理失败,但并没有花太长时间思考如何防止客户端失败:o(
谢谢 本
【问题讨论】:
-
我仍然很想听听任何可以告诉我其他提供者(除了 SonicMQ)是否通过仅确认您调用 ack() 的消息而超越/违反标准的人在 CLIENT_ACKNOWLEDGE 模式下开启...
标签: jakarta-ee jms