在停止流应用程序时恢复内部排队的消息

时间:2017-01-28 20:45:22

标签: java streaming message-queue in-memory-database ibm-streams

我们有一个流应用程序(IBM Infosphere Streams),其中应用程序的输入来自input_queue(JMS队列),输出再次写入某个output_queue(JMS队列)。 目前我们正在谈论超过每小时300k的消息, 但有时,应用程序会被堵塞(由于可用资源有限),并且消息在内部由应用程序排队,并且output_queue不会以相同的速率获取消息。 所以解决这个问题,我们别无选择,只能禁止将input_queue中的消息摄入流应用程序,并在启用摄取的情况下重启应用程序。 在此期间,内部排队的消息将丢失。因此,我们期待在需要停止流的情况下恢复丢失的消息。 我们想到的一种方法是,让另一个队列在摄取它们时在流中接收消息。并且在将它们发布到输出队列后删除它们,如果必须停止流,我们可以先在内部队列中重放这些消息,然后开始处理来自input_queue的其他消息。

现在的问题是这种方法的效率如何,如果可能,任何人都可以建议解决方法。我被告知通过网络发布到队列是一项昂贵的操作。所以我们有什么选择。建议最受欢迎。谢谢。

0 个答案:

没有答案