如果消息在超时后 queue 未到达,如何处理。 Message Broker 有可能吗?

How to handle situation if message will not come in queue after timeout. Is it possible with Message Broker?

我想我已经在标题中描述了几乎所有我需要的东西。所以有一些 WMB 流量。然后等待 queue 中的答案。如果超时后 queue 中没有消息,我需要抛出异常。

感谢您的宝贵时间

是的,这是可能的,但您需要在流程中开发它。 MQ 是为异步通信而设计的,因此超时不是它固有的东西。我现在可以想到 2 种可能的解决方案:

  • 在流中使用 TimeoutControl 和 TimeoutNotification 节点

在发送请求的流程中,在发送请求后添加一个 TimeoutControl 节点并设置所需的超时。 创建一个新流,该流以 TimeoutNotification 流开始。如果尚未收到响应,则在该流程中发送超时错误。 要知道收到了哪个响应,您可以使用不同的方法,例如发送请求和接收响应的流可以维护一个数据库 table,或者您也可以将此信息存储在队列中。

  • 发送请求后开始等待响应

设置响应处理程序流以从 MQ Input 开始,然后是 MQ Get 节点。您使用 MQ Get 侦听响应,您可以在其上设置等待间隔,这将是您的超时阈值。 MQ Input 在发送请求后获取请求发送者流发送的技术消息。 这是比第一个更糟糕的解决方案,因为您将在侦听响应时阻塞消息流线程。

或者您可以只创建 1 个流来发送请求和接收响应,使用 MQ Get 节点接收响应。 这更糟,因为您需要关闭发送请求的 MQ 输出的事务性。