Strict message ordering with the IBM MQ messaging provider and message-driven bean (MDB) applications
Message ordering is important to some asynchronous messaging applications; that is, it is important to process messages in the same order that the producer sends them. If this type of message ordering is important to your application, your design must take it into account.
例如,处理座位预订的消息传递应用程序必须具有生产者组件和使用者组件。使用者预订座位时,生产者组件向使用者组件发送消息。如果使用者取消预订,那么生产者(或者可能是另一生产者)发送第二个消息。通常,使用者组件必须先处理第一个消息(该消息预订座位),然后才处理第二个消息(该消息取消预订)。
某些应用程序使用同步(请求/响应)模式,在此模式下,生产者等待每个消息响应后才发送下一条消息。在此类型的应用程序中,使用者控制接收消息的顺序,并且可确保此顺序与生产者发送消息的顺序相同。其他应用程序使用异步(发后不理)模式,在此模式下,生产者不必等待响应就发送消息。即使是对于此类型的应用程序,通常也会保留顺序;即,使用者可能期望按生产者发送消息的顺序接收消息,特别是在发送连续消息之间的时间很长时。但是,您的设计必须考虑可能破坏此顺序的因素。
如果应用程序发送具有不同优先级的消息(高优先级消息可能超前于低优先级消息),或者应用程序通过指定消息选择器来显式接收第一个消息以外的消息,那么消息顺序将被破坏。并行处理和错误或异常处理也会影响消息排序。