如何构建一个确保接收客户端消息的服务器



在尝试任务复制kafka服务器时,我们遇到了一个问题。我们想要一个服务器接收来自生产者的消息,如果由于一些错误,kafka服务器没有接收到消息,生产者应该再次发送消息。
我们想到的一种方法是做ACK。但这将要求生产者有一个代码块来检查ACK,但我们不希望任何生产者必须为此编写额外的代码块。

生产者应该只发送它想要发送的消息并结束任务,它不应该检查消息是否已经发送。Kafka服务器必须查看消息是否已被获取。如果没有,那么做一些事情来获取消息(它也可以再次运行生产者)

我们如何实现这一点?

不应该检查消息是否已传递。Kafka服务器必须查看消息是否已被获取

卡夫卡,确认生产者请求(如果配置了)。请参阅:协议中的生产者响应,其中包括每个分区的错误代码响应。

如果在发送数据时没有服务器的响应,您的客户端无法知道它需要重新发送失败事件。

Kafka producerretries属性默认值较大。不需要任何额外的代码

最新更新