我用“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
}
我希望如果出现异常,可以通过设置max-attemps开始重试。但是没有成功,请帮助我解答疑问,谢谢
1条答案
按热度按时间3npbholx1#
现在
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。如果需要此功能,可以在https://github.com/Azure/azure-sdk-for-java/issues中创建问题