Spring-Cloud-Stream Kafka Azure - неожиданный код ошибки 13 при получении данных - PullRequest
0 голосов
/ 20 декабря 2018

Я занимаюсь разработкой приложения SpringBoot.Образы докера представляют собой микросервисы, и один из них связывается с концентратором событий Azure.

Некоторые из моих свойств:

spring-boot -> 2.0.7.RELEASE

spring-cloud.version -> Finchley.SR2

Я создал тему в Azure (с Kafka включен ).

Я выполнил несколько простых инструкций по настройке микросервиса, и все работает нормально.

@EnableBinding({Processor.class})
public class EventService {
    ...
    @Autowired private Processor ehProcessor;
    ...
    public void send(String event) {

        Message<String> message = MessageBuilder
                .withPayload(event)
                .setHeader(MessageHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON)
                .build();

        boolean send = ehProcessor.output().send(message, 5000L);

        if (!send) {

            log.error("Event NOT sent", event);
        }
    }

    ...

    @StreamListener(target = Processor.INPUT)
    public void receive(String event) {

        handle(event);
    }
}

Целый месяц все идет хорошо, но в последние два дня микросервис зависает.потому что непрерывная трассировка стека заполняет весь мой диск (решение было установить ротацию журнала докера).

java.lang.IllegalStateException: Unexpected error code 13 while fetching data
        at org.apache.kafka.clients.consumer.internals.Fetcher.parseCompletedFetch(Fetcher.java:891) ~[kafka-clients-1.0.1.jar!/:na]
        at org.apache.kafka.clients.consumer.internals.Fetcher.fetchedRecords(Fetcher.java:528) ~[kafka-clients-1.0.1.jar!/:na]
        at org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:1154) ~[kafka-clients-1.0.1.jar!/:na]
        at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1111) ~[kafka-clients-1.0.1.jar!/:na]
        at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.run(KafkaMessageListenerContainer.java:699) ~[spring-kafka-2.1.7.RELEASE.jar!/:2.1.7.RELEASE]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_181]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_181]
        at java.lang.Thread.run(Thread.java:748) [na:1.8.0_181]

Я говорю о 8/9 сообщениях журнала за 1 мс.

Заглянув внутрь класса org.apache.kafka.common.protocol.Errors , ошибка связана с:

NETWORK_EXCEPTION (13, "Сервер отключился до получения ответа. "

Я не могу программно воспроизвести эту ошибку. Я не понимаюи почему при появлении первой ошибки журнал запускается и не останавливается в бесконечном цикле.Мне нужно остановить докер контейнер, и иногда контейнер не останавливается.Единственное решение - удалить контейнер и заново создать его.

ОБНОВЛЕНИЕ

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

ОБНОВЛЕНИЕ

Проблема была исправлена.

Когда они изменили UnknownServerException на NetworkException, Spring Boot начал застрять в цикле повторов.

1 Ответ

0 голосов
/ 27 декабря 2018

В этой ссылке подтверждено, что

Произошло недавнее изменение, когда экземпляр UnknownServerException был изменен на NetworkException.

Подробности о проблемах здесь - https://github.com/Azure/azure-event-hubs-for-kafka/issues - с информацией о вашем пространстве имен.Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...