Spring Boot JMS 错误处理程序不起作用

问题描述

我尝试使用 Spring Boot 和 JMS 实现 azure 服务总线集成

错误处理程序没有按预期工作,我收到警告

WARN 10676 --- [enerContainer-1] o.s.j.l.DefaultMessageListenerContainer:JMS 消息侦听器执行失败,并且没有设置 ErrorHandler。

并且错误处理程序中的 sysout 在抛出异常时不调用。我只是试过下面的例子。

@SpringBootApplication
public class So49861714Application {

    public static void main(String[] args) {
        SpringApplication.run(So49861714Application.class,args);
    }

    @Bean
    public ApplicationRunner runner(jmstemplate template) {
        return args -> template.convertAndSend("foo","testMessage");
    }

    @Bean
    public DefaultJmsListenerContainerFactory jmsListenerContainerFactory(
            DefaultJmsListenerContainerFactoryConfigurer configurer,ConnectionFactory connectionFactory,ErrorHandler myErrorHandler) {
        DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
        configurer.configure(factory,connectionFactory);
        factory.setErrorHandler(myErrorHandler);
        return factory;
    }

    @Bean
    public ErrorHandler myErrorHandler() {
        return t -> {
            System.out.println("In error handler");
            t.printstacktrace();
        };
    }

    @JmsListener(destination = "foo")
    public void listen(String in) {
        System.out.println(in);
        throw new RuntimeException("test");
    }

}

参考 -

https://www.baeldung.com/spring-jms

Spring JMS : Set ErrorHandler for @JmsListener annotated method

https://lankydan.dev/2017/06/18/using-jms-in-spring-boot

有人请教一下吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)