在我的应用程序中,当我发送消息时,我使用回调中的元数据来保存记录的偏移量,以备将来使用。但是,有时metadata.offset()会返回-1,这会使以后的事情变得更加困难。为什么会发生这种情况,有没有一种方法可以在不消耗主题的情况下获得偏移量。
编辑:我目前在ack 0上,当我传递到ack 1时,我不再有这些错误,但是我的性能急剧下降。从10秒内的100k消息到1分钟。
发布于 2019-01-24 23:19:55
acks=0如果设置为零,则生产者根本不会等待来自服务器的任何确认。该记录将被立即添加到套接字缓冲区,并被视为已发送。在这种情况下,不能保证服务器已经接收到记录,并且重试配置将不会生效(因为客户端通常不会知道任何失败)。为每个记录返回的偏移量将始终设置为-1。
这并不完全正确,因为在10万条消息中,我得到了95k的偏移量,但我猜这是正常的。仍然需要找到另一个解决方案来获得ack=0的补偿
https://stackoverflow.com/questions/54345961
复制相似问题