我在异步模式下使用 kafka 生产者,但是当所有代理都关闭时,它就像同步一样,它一直等到 metadata.fetch.timeout.ms 过期,我的情况是 60 秒。我的第一个问题,这是正常行为还是我做错了什么?
由于我的逻辑中的事务最多应在 100 毫秒内完成,因此这个超时值对我来说是一个非常大的延迟。也许将 metadata.fetch.timeout.ms 设置为 10 ms 可能会解决我的问题,但我不确定这对我的系统有何影响。这是否会导致某个地方出现瓶颈或大量消耗 CPU?
另一种可能的解决方案可能是在 executorservice 中生成消息,这使得生成真正异步,但我不想让事情变得更复杂。以前有人试过吗?
我的最后一个问题是,如果所有代理都关闭,我是否可以使用切换机制禁用对 kafka 的生产,如果所有代理都启动,则启用。kafka 中的心跳问题是否有任何功能?
谢谢。