【问题标题】:Is it possible to return a message to Kafka Topic as "unread" message?是否可以将消息作为“未读”消息返回给 Kafka 主题?
【发布时间】:2022-02-19 00:25:26
【问题描述】:

我正在构建一个 Spark Streaming 程序,如果程序无法处理该消息,我希望它读取某些消息并将它们作为“未读”返回到主题。

我的意图是程序最终会再次读取消息并尝试处理它。

这可能吗?

【问题讨论】:

    标签: apache-spark apache-kafka


    【解决方案1】:

    如果您将记录“返回”到原始主题,它将被附加到主题的末尾,因此会在下一次投票时再次使用。

    这将导致无限的消耗循环(直到将记录放回的任何条件不再为真)

    您所要求的似乎是一个“死信队列”,它是用不同的主题实现的,而不是原来的。至于如何在 Spark 中处理它,您可能需要维护一些 Try 对象(Scala)或其他布尔类型,以了解特定事件是否已成功处理;然后 filter 在写入任何下游系统之前将其输出。

    例如具有此架构的数据框,您将在生成之前过滤/删除第三列

    topic - string
    value - bytes
    hasError - boolean
    

    【讨论】:

    • 不是真正的精神。
    • @theblue ?我指出它是“可能的”,但需要一些工作
    • 我想你明白我的意思。无论如何。
    【解决方案2】:

    没有。如果您想到 Kafka 偏移,这是不可能的。

    【讨论】: