【发布时间】:2014-04-21 16:06:35
【问题描述】:
如果 JMS 客户端应用程序要求不会丢失任何消息,也不会发送重复消息进行处理,并且每条消息都与其他消息无关(无批处理),那么哪种组合可以满足这些要求: - 持久性+自动确认会话模式(异步消费者) - 持久性+客户端确认会话模式 - 持久性 + 交易会话 - 任何其他? 我已经阅读了有关事务处理会话和确认模式的信息(例如这里的http://docs.oracle.com/javaee/1.4/tutorial/doc/JMS6.html 和这里的http://wso2.com/library/articles/2013/01/jms-message-delivery-reliability-acknowledgement-patterns/),在我看来这三种可能性都是可以接受的。你同意?使用事务性会话或更高级的可靠性概念有什么好处?
提前致谢!
【问题讨论】:
-
是的,所有这三个组合都可以处理“不丢失消息”(因为所有三个组合都有持久消息)。这三者还应确保消息只写入一次(因此没有重复)。我建议事务会话提供最佳解决方案,因为事务会话可用于包装事务中的其他活动。当然,如果您只需要 JMS,那么确认会话更容易处理。