Websphere 如何使用MDB从队列中按顺序读取消息?
我有一个MDB,它监听WebSphereMQ。它不会按照队列接收的顺序拾取消息。我怎样才能让它按那个顺序读呢?可能吗?我不应该使用MDB 通常,WMQ按照接收的顺序发送消息。然而,有几件事会影响到Websphere 如何使用MDB从队列中按顺序读取消息?,websphere,ibm-mq,synchronous,message-driven-bean,Websphere,Ibm Mq,Synchronous,Message Driven Bean,我有一个MDB,它监听WebSphereMQ。它不会按照队列接收的顺序拾取消息。我怎样才能让它按那个顺序读呢?可能吗?我不应该使用MDB 通常,WMQ按照接收的顺序发送消息。然而,有几件事会影响到 如果队列设置为优先级而不是FIFO传递,并且消息以不同的优先级到达,则它们将“无序”传递 区分生产订单和交付订单。如果消息是在远程QMgr上生成的,并且存在到本地QMgr的多条路径,则消息可能会无序到达 持久性差异-如果消息是在远程QMgr上生成的,并且具有不同的持久性,则非持久性消息可能比持久性消息
因此,当MDB接收到无序的消息时,这些事情中的任何一个,甚至其中的几个组合,都可能是原因。要么消除对消息序列的依赖(最佳选择),要么重新检查设计并协调所有可能导致无序处理的因素。要添加到T.Rob的列表中,MDB使用application server WorkManager计划消息传递,因此,消息顺序也取决于WorkManager启动工作项的顺序。这不在WMQ的控制范围之内。如果将MDB ServerSessionPool深度限制为1,则此限制将被删除,因为只有一个在用工作实例,但代价是降低最大吞吐量 如果您在WebSphereApplicationServer中运行,那么带有ListenerPorts的非ASF模式可以根据一些事务/回退警告保留消息顺序。这里有一个技术支持说明: