Java JMS消息ID是否表示JMS服务器接收消息的顺序?邮递

Java JMS消息ID是否表示JMS服务器接收消息的顺序?邮递,java,jms,Java,Jms,若应用程序在单线程中将消息发布到主题[JMS提供者Tibco],接收方也在单线程中读取消息。 仍在经历罕见的无序交付给接收方的情况 依靠JMS消息ID来验证传递给JMS提供者的消息的顺序 当前的设计是否有利于订单交付到接收方?并且依赖JMS消息ID来验证JMS提供者接收消息的顺序是否正确?根据Java文档,消息ID仅被指定为唯一的 由于没有说明它与消息排序有关,我建议它与此无关,并建议不要将其用于此类目的。@Stephan的回答是正确的 我只想补充一点,javadoc声明消息ID是在发送消息时生

若应用程序在单线程中将消息发布到主题[JMS提供者Tibco],接收方也在单线程中读取消息。 仍在经历罕见的无序交付给接收方的情况

依靠JMS消息ID来验证传递给JMS提供者的消息的顺序


当前的设计是否有利于订单交付到接收方?并且依赖JMS消息ID来验证JMS提供者接收消息的顺序是否正确?

根据Java文档,消息ID仅被指定为唯一的


由于没有说明它与消息排序有关,我建议它与此无关,并建议不要将其用于此类目的。

@Stephan的回答是正确的


我只想补充一点,javadoc声明消息ID是在发送消息时生成的,而不是在接收消息时生成的。因此,即使ID是连续的,它们也不会告诉您传递的顺序。

JMS生成的MessageID应该是唯一的。然而,JMS提供程序用于生成MessageID的逻辑可以是从简单的数字增量到复杂算法的使用。您不应该假定messageid是连续的。如果您的应用程序需要邮件传递订单,然后,您可以查看如何使用消息组来对组中的消息进行排序,您可以等到组中的所有消息都收到后再开始处理消息。

谢谢stephen…根据JMS API,它只需要是唯一的,可能不符合顺序…但很难向团队解释;)。。。。当前设计是否能确保按订单交付?@Mashesh如果“当前设计”仍然“经历罕见的按订单交付”,显然不是。@Mahesh。向团队解释应该很容易。简单地说,您/他们所做的假设根据规范所述是无效的。@Mahesh;由于消息ID是特定于实现的,如果团队使用任何特定的实现作为证明,那么如果他们将系统升级到不同的实现,那么他们可能会遇到麻烦