我的应用程序中有两个线程 - 一个从MQ队列异步读取消息并将它们发送到处理单元,另一个从处理单元检索信息并将相关消息放在发送方队列中。问题是,在前一个消息输出线程完成之前检索下一个消息并发送到处理单元,从应用程序的角度来看这是不正确的。由于可以在任何时间在队列上找到消息以进行处理,因此不希望同步读取消息。
我知道我可以引入另一个队列来保留消息,直到准备好处理,但是我可以使用任何与MQ设置相关的解决方案吗?在我看来,这是一个非常常见的设置。
提前感谢您的建议/帮助。
答案 0 :(得分:2)
这基本上是同步问题。我会建立一个信令机制,消息监听器将从MQ接收的消息发送到处理单元并等待事件。将消息发送到输出队列后的输出线程表示该事件。一旦发出信号,消息侦听器就会等待队列中的下一条消息。
答案 1 :(得分:1)
我可以在某种程度上理解这个问题......看起来你想做的就是持有消息监听器一段时间,直到另一个活动完成。消息侦听器可以使用选择器来获取具有属性state = READY的消息。当输出线程完成时,它可以从队列中获取消息并将状态设置为READY。默认情况下,如果未在消息上设置此属性,则消息侦听器将不会选择该消息。