【问题标题】:How to handle consumer failures in queue-based systems?如何处理基于队列的系统中的消费者失败?
【发布时间】:2012-07-21 05:20:51
【问题描述】:

我有一个相当概念性的问题,我希望不会被认为太笼统或太愚蠢:)

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

我的问题是 - 处理此过程中的故障的最佳做法是什么?假设第 1 步的消费者完全失败。

在基于队列的架构上实现这种批处理是否完全符合逻辑/效率?

【问题讨论】:

    标签: architecture message-queue batch-processing


    【解决方案1】:

    是的,队列没问题,您还需要一个错误队列,您可以在其中将消息放在有问题的文件和记录中

    请注意,完全失败是一种简单的情况,因为您可以稍后重新处理整个文件(如果这是一个临时问题)或忽略该文件(如果它有问题)。更严重的问题是部分记录有问题的部分失败。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-09
      • 1970-01-01
      • 2018-07-13
      相关资源
      最近更新 更多