最近我的一位同事说:
使用不同的会话来制作和使用消息时,无法保证消息的发送顺序与生成消息的顺序相同。
现在我知道JMS一般不保证邮件传递顺序,但这个“多会话”角度对我来说是新的。这有什么道理吗?
答案 0 :(得分:2)
根据the JMS Spec(第4.4.10条消息顺序),只保证从会话发送到目的地的消息顺序(即使有一些警告)。
这意味着:
仅 从一个会话发送到同一目的地 的两条消息的顺序。
请注意,给定的JMS实现可能通常按照生成它们的(全局)顺序传递项目。但是你不应该以任何方式依赖它,因为它基本上是一种“尽力而为”的东西:如果它们可以管理它,它通常会更好。如果他们不能,他们仍然在规范范围内,您的应用程序必须能够处理它。
tl; dr 是的,你的同事是对的。请再次注意,即使是一个会话/一个目标的情况下的保证也不是很强,特别是如果涉及不同的消息选项(详见链接的PDF)。
答案 1 :(得分:1)
由于JMS是“异步”的,因此永远不会保证邮件传递顺序。