什么是客户端接入三板斧?

用户在第一次接入消息队列 for Apache Kafka 时,通常会被以下三个问题困扰:

  • 网络连通问题

  • 客户端版本问题

  • 配置问题

从上述三个方向,一步一步排查,基本上可以解决 99% 的问题。

哪里有发送最佳实践?

请参见发布者最佳实践

如何进行发送消息的测试?

您可以在控制台的Topic 管理页面,看到各个 Topic 的发送消息按钮,进行消息发送测试,以验证集群是否运转正常。

使用客户端发送消息之后,如何确定是否发送成功?

大部分客户端在发送之后,会返回 Callback 或者 Future,如果回调成功,则说明消息发送成功。

此外,您还可以在控制台通过以下方式确认消息发送是否正常:

  • 查看 Topic 的分区状态,可以实时看到各个分区的消息数量。

  • 查看 Topic 的流量监控,可以看到分钟级别的流量曲线

是否支持压缩?

请升级到最新版本,进行支持。升级步骤请参见升级实例服务版本

消息队列 for Apache Kafka 的生产者会建立多少个到 Broker 的连接?

每个 Producer 至少要独占到各个 Broker 进行发送消息的 TCP 连接,处理元数据的连接也可能增多。

更多信息,请参见 How are TCP Connections managed by kafka-clients scala library

消息队列 for Apache Kafka 的 Java 客户端设置回调是否会影响消息发送的速度?

主要取决于您的回调里的处理是否耗时,另外跟 max.in.flight.requests.per.connection 这个参数的设置有关。

为了减少回调里的处理耗时,最好不要过于频繁地在回调里面做耗时的处理,可以积累一定量 Ack 后再做批量的回调处理,或者把处理放到异步的另一个线程去处理,不阻塞回调的完成。

在阻塞结束之前,最多能发的消息数由 max.in.flight.requests.per.connection 决定。