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

时间:2017-01-06 02:04:54

标签: apache-kafka kafka-consumer-api kafka-producer-api

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

我在一个终端窗口中运行

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic tag7

这是另一个

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic tag7 --zookeeper localhost:2181

但我发送的数据需要超过1秒才能由消费者打印。我发送的数据是我输入到制作人的数据,所以基本上每隔几秒发送一条消息。是否有任何可以更改的配置选项,以便Kafka代理每秒只需要很少的消息,从而使消息的移动速度更快?

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

提前谢谢!

2 个答案:

答案 0 :(得分:3)

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

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

--consumer-property fetch.max.wait.ms=0 --consumer-property fetch.min.bytes=0

欲了解更多信息:

答案 1 :(得分:3)

由于Ivan Georgiev的答案对我不起作用(不仅因为它是关于消费者而不是生产者),我打开了another question here in StackOverFlow,最后也打开了Apache's Jira ppatierno(谢谢)回答了为什么会发生以及如何解决它。

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

./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testConsole --timeout 100