2012-07-22 37 views
0

我有一个相当概念性的问题,我希望不会被认为过于笼统或太傻:)如何在基于队列的系统中处理消费者故障?

在一个数据项需要经过许多步骤(例如应用程序 - 第1步 - 从解析一个CSV文件并生成报告,第2步 - 然后根据上一步生成的报告运行报告等),让我们假设处理是使用持续队列实现的,这样当发现新的原始文件时,消息被放入要求处理所述文件的队列。处理文件的消费者选择消息,并将处理结果的另一消息排入下一步处理等。

我的问题是 - 在这个过程中处理失败的最佳实践是什么?假设步骤1中的消费者完全失败。

在基于队列的体系结构上实现这种批处理完全是逻辑/高效的吗?

回答

1

是,队列都ok,你还需要一个错误队列,你就会把有问题的文件和记录的消息

需要注意的是彻底的失败是最简单的情况下,因为你可以重新处理整个文件后(如果它是一个暂时的问题)或忽略该文件(如果它是错误的)。更严重的问题是部分故障,其中一些记录有问题。

如果一步失败意味着必须以某种方式撤消其他步骤,则可能需要考虑将其实施为saga。如果您想要更好地控制流程,您可能需要考虑编排

相关问题