2016-10-01 78 views
0

我試圖實現簡單的服務,將來自kafka的消息包裝在一些數據中並將其發送到外部服務。Kafka - 用於處理消費者無法處理消息的模式

處理消息時處理外部服務不可用的常見模式是什麼?

到目前爲止,我只在外部服務請求成功時手動提交消息。如果沒有提交,我希望kafka在一段時間後重新發送消息,以便處理外部服務失敗對消費者而言是透明的。儘管如此,我找不到一種方法。 但我很好奇,如果我沒有做一些反模式,並有更好的解決方案。

回答

2

首先您需要考慮的是,卡夫卡是的基礎。因此,如果您想要再次收到一條消息,則需要seek()到其偏移量和poll()

此外,如果你想停止處理消息,你可以在pause()分區和更高版本resume()他們。見「消耗流量控制」消費的JavaDoc:https://kafka.apache.org/090/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html

因此,如果外部服務出現故障,只是暫停,等待,直到它回來了。

相關問題