Spring Boot 正在使用Azure事件中心流,最大尝试次数不起作用

iyfjxgzm  于 2023-03-18  发布在  Spring
关注(0)|答案(1)|浏览(148)

我用“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开始重试。但是没有成功,请帮助我解答疑问,谢谢

3npbholx

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中创建问题

相关问题