若消息在超时后并没有进入队列,该如何处理这种情况.使用Message Broker是否可能



我想我在标题中几乎描述了我需要的一切。因此存在一些WMB流。还有一个人在排队等待答案。如果超时后队列中没有消息,我需要抛出异常。

感谢您抽出时间

是的,这是可能的,但您需要在流中开发它。MQ是为异步通信而设计的,所以超时不是它固有的

  • 使用流中的TimeoutControl和TimeoutNotification节点

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

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

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

或者,您可以只使1个流发送请求并接收响应,通过MQ Get节点接收响应。更糟糕的是,您需要关闭发送请求的MQ输出的事务性。

最新更新