kafka服务器TimeoutException:过期

时间:2018-04-19 16:48:06

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

我在两个不同的VM中运行Kafka实例。我可以使用spring kafka-template向vm-1中运行的Kafka发送消息,但在向vm-2中运行的kafka发送消息时,我得到以下异常:

  

2018-04-19 15:12:57 [kafka-producer-network-thread | producer-1]错误   o.s.k.s.LoggingProducerListener - 发送时抛出异常   密钥=' xxxx'和有效负载=' {79,98,106,1,4,22,97,118,   114,111,46,115,99,104,101,109,97,-28,51,123,34,116,   12 ...' to topic xxxxxx-v1:org.apache.kafka.common.errors.TimeoutException:Expiring 1 record(s)   for xxxxxx-v1-3:自批量创建加上余下时间已经过去60043毫秒   时间

制作人配置

config.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, x.x.x.x:port);
config.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
config.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, ByteArraySerializer.class);
config.put(ProducerConfig.REQUEST_TIMEOUT_MS_CONFIG, 60000);
config.put(ProducerConfig.BATCH_SIZE_CONFIG, 1048576);
config.put(ProducerConfig.LINGER_MS_CONFIG, 100);
config.put(ProducerConfig.MAX_REQUEST_SIZE_CONFIG, 10485760);
config.put(ProducerConfig.ACKS_CONFIG, "all");

我可以telnet到两个虚拟机并ping它们。

1 个答案:

答案 0 :(得分:0)

如果您有两个代理,并且能够向一个代理发送消息,而没有另一个代理,则表明您可能配置了另一个代理。

检查失败的经纪人的广告听众。

advertised.listeners=PLAINTEXT://1.2.3.4:9092

P.S:PLAINTEXT是协议, 可能需要更改。生产者必须可以访问该IP。

此外,您可能还需要检查经纪人上的message.max.bytes或主题上的max.message.bytes大于生产者的max.request.size。要对此进行调试,请尝试发送小消息,如果它们也给出相同的错误,那么这不是问题。

参考:Stackoverflow answer