При использовании потока концентраторов событий Azure максимальное количество попыток не работает

Я использую «spring-cloud-azure-stream-binder-eventhubs» для разработки центров событий. Когда я имею дело с потребителями, могут быть некоторые бизнес-исключения.

моя конфигурация

          stream:
      function:
        definition: consumer
      bindings:
        consumer-in-0:
          destination: test-eventhub
          group: $Default
          consumer:
            max-attempts: 3
        supply-out-0:
          destination: test-eventhub

мой потребитель

      @Bean
    public Consumer<Message<String>> consumer() {
        return message -> {
            if (message.equals("a")) {
                throw new RuntimeException("run time exception");
            }
        };

мой глобальный обработчик исключений

          @ServiceActivator(inputChannel = "errorChannel")
    public void globalConsumerError(Message<?> message) {
        MessageHandlingException messageHandlingException = (MessageHandlingException) message.getPayload();
        log.info("message : {}", new String((byte[]) messageHandlingException.getFailedMessage().getPayload()));
        log.error("error info: {}", message);
        // do something
    }

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

1 ответ

Сейчасspring-cloud-azure-stream-binder-eventhubsне поддерживаетspring.cloud.stream.binding.xxx.consumer.max-attemptsсвойство. Пакет SDK концентратора событий не поддерживает функцию повтора. Ссылки: https://github.com/Azure/azure-sdk-for-java/issues/18344.

Вот обходной путь:

          @Bean
    public Consumer<Message<String>> consumer() {
        return message -> {
            for (int i = 0; i < 3; i ++) {
                // Your codes
            }
        };
    }
Другие вопросы по тегам