【问题标题】:kafka server TimeoutException: Expiring 1 record(s) forkafka server TimeoutException: Expiring 1 record(s) for
【发布时间】:2018-09-30 06:21:01
【问题描述】:

我有 Kafka 实例在 2 个不同的虚拟机中运行。我可以使用 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 - 发送时抛出异常 key='xxxx' 和 payload='{79, 98, 106, 1, 4, 22, 97, 118, 114、111、46、115、99、104、101、109、97、-28、51、123、34、116、 12...' 到主题 xxxxxx-v1: org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) 对于 xxxxxx-v1-3:自批处理创建以来已过去 60043 毫秒加上 linger 时间

生产者配置

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");

我可以远程登录到两个虚拟机,也可以 ping 它们。

【问题讨论】:

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


【解决方案1】:

如果您有两个代理,并且您能够将消息发送到一个代理而不是另一个,则意味着您可能错误地配置了另一个代理。

检查失败代理的广告侦听器。

advertised.listeners=PLAINTEXT://1.2.3.4:9092

P.S:PLAINTEXT 是一个协议,可能需要根据您的情况进行更改。您的制作人必须可以访问该 IP。

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

参考:Stackoverflow answer

【讨论】:

    猜你喜欢
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 2016-11-10
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多