【问题标题】:Kafka - patterns for handling consumer unable to process messagesKafka - 处理无法处理消息的消费者的模式
【发布时间】:2017-02-09 17:09:57
【问题描述】:

我正在尝试实现简单的服务,该服务从 kafka 中提取消息并将它们包装在一些数据中并发送到外部服务。

处理消息时处理外部服务不可用的常见模式是什么?

到目前为止,我仅在对外部服务的请求成功时才手动提交消息。如果消息未提交,我希望 kafka 在一段时间后重新发送消息,以便处理外部服务失败对消费者来说是透明的。我找不到办法做到这一点。 但是,如果我不做一些反模式并且有更好的解决方案,我很好奇。

【问题讨论】:

    标签: scala apache-kafka reactive-kafka


    【解决方案1】:

    首先您需要考虑,Kafka 是基于 pull 的。因此,如果你想第二次接收消息,你需要seek() 到它的偏移量和poll()

    此外,如果您想停止处理消息,您可以pause() 分区和稍后resume() 它们。请参阅 Consumer JavaDoc 中的“消费流控制”部分https://kafka.apache.org/090/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html

    因此,如果您的外部服务出现故障,只需暂停并等待它恢复即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      • 1970-01-01
      • 1970-01-01
      • 2016-05-04
      • 2020-12-18
      • 2021-10-11
      • 2020-11-11
      相关资源
      最近更新 更多