我在两个不同的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它们。
答案 0 :(得分:0)
如果您有两个代理,并且能够向一个代理发送消息,而没有另一个代理,则表明您可能配置了另一个代理。
检查失败的经纪人的广告听众。
advertised.listeners=PLAINTEXT://1.2.3.4:9092
P.S:PLAINTEXT是协议, 可能需要更改。生产者必须可以访问该IP。
此外,您可能还需要检查经纪人上的message.max.bytes
或主题上的max.message.bytes
大于生产者的max.request.size
。要对此进行调试,请尝试发送小消息,如果它们也给出相同的错误,那么这不是问题。