Kafka 命令行生产者/消费者有 1 秒的延迟

kgm*_*234 5 apache-kafka kafka-consumer-api kafka-producer-api

我正在使用命令行生产者和消费者对 Kafka 进行测试运行。

我在一个终端窗口中运行它

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic tag7
Run Code Online (Sandbox Code Playgroud)

这在另一个

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic tag7 --zookeeper localhost:2181
Run Code Online (Sandbox Code Playgroud)

但是我发送给消费者的数据需要 1 秒多的时间。我发送的数据是我输入到生产者的数据,所以基本上每隔几秒就会有 1 条消息。是否有任何我可以更改的配置选项,以便 Kafka 代理每秒期望很少的消息,从而使消息移动得更快?

我使用的是Zookeeper和Kafka的默认配置,所以配置不多。

先感谢您!

fro*_*tin 7

由于Ivan Georgiev的回答对我不起作用(不仅因为它是关于消费者而不是生产者),我在 StackOverFlow 中打开了另一个问题,最后也在Apache 的 Jirappatierno(谢谢)回答了为什么会发生以及如何解决。

要更改控制台生产者的属性linger.ms(默认为 1000 毫秒)和batch.size(默认为 16384),您需要在命令行中分别使用--timeout和指定它--max-partition-memory-bytes,例如,如果您在 Kafka 的主文件夹中:

./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testConsole --timeout 100
Run Code Online (Sandbox Code Playgroud)


Iva*_*iev 4

Kafka有两个配置参数——一个是设置在应答消费者请求之前接收的最小数据量,另一个是设置在应答请求之前等待数据到达的最长时间。

您可以尝试添加以下选项:

--consumer-property fetch.max.wait.ms=0 --consumer-property fetch.min.bytes=0
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息: