我有一个场景,接收端收到的消息顺序有时不按顺序排列。
我的场景:
机器A:
我正在通过rabbitMQ 铲从机器A 向机器B 发送一系列消息(大约12 条消息)。
消息的大小不同。12 条消息的总大小接近 8mb。
一旦发送了 12 条消息,我最后也会向 MACHINE B 发送“完整消息”。
机器 B:
这是收货机。这台机器有一个监听器。它接收机器 A 发送的所有消息。一旦它收到“发送完成”,很明显这是来自机器 A 的最后一条消息,机器 B 开始处理所有收到的消息。
机器 B 配置
<rabbit:listener-container connection-factory="connectionFactory"> <rabbit:listener ref="onMessageCommand" queue-names="CommandQueue" /> </rabbit:listener-container> <bean id="onMessageCommand" class="com.mypackage.command.messaging.OnMessageListner"> <property name="callBackObject" ref="callbackDisEvent" /> <property name="template" ref="amqpTemplate" /> </bean> <bean id="callbackDisEvent" class="com.mypackage.command.OperationSettingsListener"></bean>机器编码
public void sendMessage(String messageToSend,String machineBID) { Message sendMessage = new Message(messageToSend, new MessageProperties()); RabbitTemplate rabbitTemplate = messingApplContext.getBean(RabbitTemplate.class); rabbitTemplate.send(message, machineBID + ".command"); }
问题: 有时我观察到机器 B 在某些设置之前收到了一个“发送完成”。理想情况下,“发送完成”应该始终是 MACHINE B 收到的最后一条消息。
请问我可以知道这里可能是什么问题。