在我previous message我正在寻找一种解决方案来并行处理传入的消息。经过大量的反复试验,我想我可能有一个有效的解决方案。
然而,我正在处理的平台的一个要求是,正在处理的消息需要重新启动"或者"重新排队"如果突然重启经纪人。
在测试时,我已成功启动多个处理器以执行每条消息的工作单元。我突然重新启动代理时发现的是,任何消息都在"上工作"处理器内部实际上已丢失。但是,当处理器抛出故意异常时,消息将重新传送到队列。
如何处理正在处理的邮件(并且工作单元尚未完成)? 任何建议都非常感谢。
注意:最终的实现将使用tcp负载均衡器后面的两个相同代理的主 - 主设置。
答案 0 :(得分:0)
为了保留您的消息,您必须使用具有持久消息传递的事务。如果没有事务处理会话,则不会涵盖所有异常情况,特别是如果您使用默认的AUTO_ACKNOWLEDGE,它告诉代理您已使用该消息,那么请在消息传递后立即删除它。这就是为什么当您重新启动代理时,您会丢失消息。除此之外别无他法。
假设您已正确设置交易,那么您没有理由不能并行处理。 This blog is a bit older now,但仍然充满了良好的信息,以确保您正确设置交易。