KafkaProducerException при отправке сообщения в тему

Свойства Spring загрузки для производителя kafka:

spring.kafka.bootstrap-servers=localhost:9092
spring.kafka.client-id=bam
#spring.kafka.producer.acks= # Number of acknowledgments the producer requires the leader to have received before considering a request complete.
spring.kafka.producer.batch-size=0
spring.kafka.producer.bootstrap-servers=localhost:9092
#spring.kafka.producer.buffer-memory= # Total bytes of memory the producer can use to buffer records waiting to be sent to the server.
spring.kafka.producer.client-id=bam-producer
spring.kafka.consumer.auto-offset-reset=earliest
#spring.kafka.producer.compression-type= # Compression type for all data generated by the producer.
spring.kafka.producer.key-serializer= org.apache.kafka.common.serialization.StringSerializer
#spring.kafka.producer.retries= # When greater than zero, enables retrying of failed sends.
spring.kafka.producer.value-serializer= org.apache.kafka.common.serialization.StringSerializer
#spring.kafka.properties.*= # Additional properties used to configure the client.

Я получаю исключение ниже, когда пытаюсь отправить сообщение в тему kafka:

Caused by: org.springframework.kafka.core.KafkaProducerException: Failed to send; nested exception is org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for bam-0 due to 30004 ms has passed since last append
at org.springframework.kafka.core.KafkaTemplate$1.onCompletion(KafkaTemplate.java:255)
at org.apache.kafka.clients.producer.internals.RecordBatch.done(RecordBatch.java:109)
at org.apache.kafka.clients.producer.internals.RecordBatch.maybeExpire(RecordBatch.java:160)
at org.apache.kafka.clients.producer.internals.RecordAccumulator.abortExpiredBatches(RecordAccumulator.java:245)
at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:212)
at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:135)
... 1 more

Вызвано: org.apache.kafka.common.errors.TimeoutException: истекает срок действия 1 записи для bam-0 из-за того, что с момента последнего добавления прошло 30004 мс

Я не могу понять, почему я получаю это исключение. Кто-нибудь может помочь?


person Sahil Gupta    schedule 03.07.2017    source источник


Ответы (2)


Время ожидания продюсера для отправки сообщений истекает. Я заметил, что вы используете localhost в начальной загрузке. Убедитесь, что брокер доступен локально и прослушивает порт 9092.

person dawsaw    schedule 03.07.2017
comment
Я не использую местного брокера. Я изменил его на localhost здесь из соображений безопасности. К вашему сведению, я могу подключиться к брокеру через свой компьютер - person Sahil Gupta; 03.07.2017
comment
Как насчет производителя консоли? Это работает? Ошибка говорит о том, что истекает срок действия партии первого размера, поэтому это похоже на проблему, связанную с брокером каким-то образом для меня. - person dawsaw; 03.07.2017
comment
Могу ли я получить доступ к производителю консоли с машины, отличной от брокера? - person Sahil Gupta; 03.07.2017
comment
Самый простой способ - просто загрузить пакет Kafka, потому что он включает его. - person dawsaw; 03.07.2017

Проблема решена путем установки для Advertised.listeners в server.properties значения PLAINTEXT: // ‹ExternalIP>: 9092.

Примечание. Kafka развертывается поверх aws.

person Sahil Gupta    schedule 03.07.2017