在卡夫卡复用消费者和生产者

时间:2016-01-20 12:08:58

标签: apache-kafka apache-zookeeper

在我的kafka消费者线程(高级别)中,在我使用消息之后,我将一些业务逻辑应用于此消息并将其转发给WS。但是这个web服务有时可能会停机,因为我从kafka中消耗了这个对象并且偏移向前移动,我会错过这个对象。

摆脱这个问题的一种方法是在zookeeper中禁用自动提交并通过调用programmaticaly提交偏移量,但我希望这是一个非常昂贵的操作。我将以大约2000 tps的速度向kafka制作,并可能在以后增加。

另一种方式 - 我不确定这是不是一个好主意 - 如果我遇到任何问题,再次向卡夫卡产生这个消费对象,但我没有看到任何与我的所有google相关的帖子。这是一个甚至不太可能的事情吗?

你能否告诉我一些关于处理这种情况的见解。

由于

2 个答案:

答案 0 :(得分:1)

将此类消息移至错误队列并稍后重试是一种众所周知的方法。

请参阅Dead letter channel

答案 1 :(得分:1)

您可以将失败的消息回发到同一主题或您选择的其他主题。

如果您使用相同的主题,您将在主题结尾处推送消息,并且将在其他主题之后接收消息(因此,如果订单对您不重要,请执行此操作)。此外,如果您在发送邮件之前执行的操作不是幂等的,那么您将需要识别此记录,以便他们不会执行两次操作。

如果您使用failed_topic,则可以将无法发送的消息推送到此主题,并且当WS再次健康时,您需要创建一个消费者,消费者在那里消费所有消息并将其发送到WS。 / p>

希望它有所帮助!