在kafka中,如果消息处理失败,是否可以设置每条消息的退避时间以便我可以处理其他消息,并稍后使用失败的消息重试?如果我把它放在主题前面,它会很快出现。我用Kafka和Spring Boot。
7rfyedvj1#
据我所知,kafka在使用数据时没有任何用于回退时间的内置功能。一旦您成功地处理其他消息并提交它们,就很难只重新读取处理失败的消息。kafka主题被构建为按顺序使用,同时保证每个主题分区的消息顺序。在这种情况下,我们通常会在处理消息的过程中捕获异常,然后将其发送到单独的主题(连同错误代码/提示)中,并继续处理稍后传入的消息。这样,您就可以在以后分析数据,如果需要的话,将其他主题中的消息再次移动到原始主题中。将有问题的消息从单独的主题插入到原始的输入主题中,可以通过一个简单的批处理作业来完成,这个批处理作业可以不时运行,甚至可以使用kafka提供的命令行工具。
1条答案
按热度按时间7rfyedvj1#
据我所知,kafka在使用数据时没有任何用于回退时间的内置功能。
一旦您成功地处理其他消息并提交它们,就很难只重新读取处理失败的消息。kafka主题被构建为按顺序使用,同时保证每个主题分区的消息顺序。
在这种情况下,我们通常会在处理消息的过程中捕获异常,然后将其发送到单独的主题(连同错误代码/提示)中,并继续处理稍后传入的消息。这样,您就可以在以后分析数据,如果需要的话,将其他主题中的消息再次移动到原始主题中。
将有问题的消息从单独的主题插入到原始的输入主题中,可以通过一个简单的批处理作业来完成,这个批处理作业可以不时运行,甚至可以使用kafka提供的命令行工具。