При использовании потока концентраторов событий 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
}
};
}