Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 订单单位-邮件应发送到同一节点?_Java_Jms_Message Queue - Fatal编程技术网

Java 订单单位-邮件应发送到同一节点?

Java 订单单位-邮件应发送到同一节点?,java,jms,message-queue,Java,Jms,Message Queue,在消息队列中,我添加了消息的顺序单位。它被处理得井然有序。但在集群环境中,消息会传递到不同的节点。这是预期的吗 请帮忙。提前谢谢 编辑:如何使用Message.acknowledge()查找执行顺序,请给我任何教程或链接。我试图查找,但无法获得有用的信息。是的,它的行为符合预期。在集群模式下,在集群的所有节点中运行的消费者将以视差方式消费。因此,您不能保证首先到达队列的消息将首先被处理。您可以使用不同的方法来实现您的目标(如果我对您的问题的理解是正确的,请按照接收的顺序处理消息) 1:仅在群集中

在消息队列中,我添加了消息的顺序单位。它被处理得井然有序。但在集群环境中,消息会传递到不同的节点。这是预期的吗

请帮忙。提前谢谢


编辑:如何使用Message.acknowledge()查找执行顺序,请给我任何教程或链接。我试图查找,但无法获得有用的信息。

是的,它的行为符合预期。在集群模式下,在集群的所有节点中运行的消费者将以视差方式消费。因此,您不能保证首先到达队列的消息将首先被处理。您可以使用不同的方法来实现您的目标(如果我对您的问题的理解是正确的,请按照接收的顺序处理消息)

1:仅在群集中节点上的一个上运行使用者

2:为节点提供共享位置,以同步消息处理顺序 例如:每个节点在消费之后和处理之前都会检查消息是现在处理还是以后处理


3:在您的消息上有一些消息头,以制定消息使用逻辑(如果可能,因为在这种情况下,每条消息都应该是自给自足的,可以告诉您是现在处理还是以后处理)

在分布式队列中,具有相同UOO的消息由同一节点处理

下面的视频中有一个简单的例子。演示由Oracle完成


您的确认模式设置为什么?只要消息按顺序处理,我看不出发送到不同节点的消息有任何错误。获取队列会话时使用Session.AUTO_ACKNOWLEDGE。有什么办法可以找到执行顺序吗?我真的不知道为什么这个问题在非主题类别上得到了密切的投票?嗯,答案似乎与此相矛盾。它似乎可以保证顺序/顺序执行,但并不是说它们都在同一个节点上运行。我可以让来自同一组的消息在不同的节点上运行,但我希望能像日志一样确保它。可能吗?