【发布时间】:2017-02-03 04:36:33
【问题描述】:
我想我几乎在标题中描述了我需要的所有内容。所以有一些 WMB 流。一个等待队列中的答案。如果超时后队列中没有消息,我需要抛出异常。
感谢您的宝贵时间
【问题讨论】:
标签: timeout queue message ibm-mq messagebroker
我想我几乎在标题中描述了我需要的所有内容。所以有一些 WMB 流。一个等待队列中的答案。如果超时后队列中没有消息,我需要抛出异常。
感谢您的宝贵时间
【问题讨论】:
标签: timeout queue message ibm-mq messagebroker
是的,它是可能的,但您需要在您的流程中开发它。 MQ 是为异步通信而设计的,因此超时不是它固有的东西。我现在可以想到两种可能的解决方案:
在发送请求的流程中,发送请求后,您添加一个 TimeoutControl 节点并设置所需的超时。 创建一个以 TimeoutNotification 流开始的新流。如果尚未收到响应,则在该流程中发送超时错误。 要知道收到了哪个响应,您可以使用不同的方法,例如发送请求和接收响应的流可以维护一个数据库表,或者您也可以将此信息存储在队列中。
将响应处理程序流设置为从 MQ 输入开始,然后是 MQ 获取节点。您使用 MQ Get 侦听响应,您可以在其上设置等待间隔,这将是您的超时阈值。 MQ 输入在发送请求后获取请求发送方流发送的技术消息。 这是一个比第一个更糟糕的解决方案,因为您将在侦听响应时阻塞消息流线程。
或者您可以只创建 1 个流来发送请求并接收响应,使用 MQ Get 节点接收响应。 这更糟糕,因为您需要关闭发送请求的 MQ 输出的事务性。
【讨论】: