Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 卡夫卡“;“重试”;主题反模式_Apache Kafka - Fatal编程技术网

Apache kafka 卡夫卡“;“重试”;主题反模式

Apache kafka 卡夫卡“;“重试”;主题反模式,apache-kafka,Apache Kafka,我看到的大多数地方都建议,为了防止数据丢失,您应该创建一个“重试”主题。如果消费者失败,它应该向“重试”主题发送一条消息,该主题将等待一段设定的时间,然后向“主”主题发送一条消息 这不是一种反模式吗?因为当它返回到“main”主题时,订阅“main”主题的所有服务都会重新处理失败的消息,即使最初只有一个服务无法处理它 有没有一种传统的方法来解决这个问题,比如将clientId放在消息头中,这些消息是重试的结果?我遗漏了什么吗?死信队列(DLQ)本身并不是一种反模式。循环回到主要主题可能是,但这是

我看到的大多数地方都建议,为了防止数据丢失,您应该创建一个“重试”主题。如果消费者失败,它应该向“重试”主题发送一条消息,该主题将等待一段设定的时间,然后向“主”主题发送一条消息

这不是一种反模式吗?因为当它返回到“main”主题时,订阅“main”主题的所有服务都会重新处理失败的消息,即使最初只有一个服务无法处理它

有没有一种传统的方法来解决这个问题,比如将clientId放在消息头中,这些消息是重试的结果?我遗漏了什么吗?

死信队列(DLQ)本身并不是一种反模式。循环回到主要主题可能是,但这是主观的

另一种方法是“停止世界”,在主题保留删除您关心的消息之前,更新消费者代码以解决错误。或者,让您的下游消费者也阅读DLQ主题,但处理方式与主主题不同

有没有一种传统的方法来解决这个问题,比如将clientId放在头文件中

也许您想以某种方式跟踪沿袭,但重新引入那个些以前不好的消息会引入延迟和排序问题,从而干扰“好”消息

相关问题


谢谢。我不太担心消息或代码的内容不好,我更担心消费者的数据库暂时不可用(这意味着它无法处理消息)。在这种情况下,更典型的做法是重新启动使用者,还是处理使用者内的重试逻辑?我没有编写写入数据库的使用者,只使用了使用Connect API构建的使用者,后者具有重试机制和DLQ选项