在尝试任务复制kafka服务器时,我们遇到了一个问题。我们想要一个服务器接收来自生产者的消息,如果由于一些错误,kafka服务器没有接收到消息,生产者应该再次发送消息。
我们想到的一种方法是做ACK。但这将要求生产者有一个代码块来检查ACK,但我们不希望任何生产者必须为此编写额外的代码块。
生产者应该只发送它想要发送的消息并结束任务,它不应该检查消息是否已经发送。Kafka服务器必须查看消息是否已被获取。如果没有,那么做一些事情来获取消息(它也可以再次运行生产者)
我们如何实现这一点?
不应该检查消息是否已传递。Kafka服务器必须查看消息是否已被获取
卡夫卡,确认生产者请求(如果配置了)。请参阅:协议中的生产者响应,其中包括每个分区的错误代码响应。
如果在发送数据时没有服务器的响应,您的客户端无法知道它需要重新发送失败事件。
Kafka producerretries
属性默认值较大。不需要任何额外的代码