很少有 JMS 侦听器在 Springboot 中停止工作并在重启后恢复

问题描述

我有一个 springboot 应用程序,它有 7 个 JMS 侦听器。很少有 Listeners 会突然停止处理消息,队列开始堆积。与此同时,很少有其他听众在同一个应用程序中工作。但是如果我重新启动应用程序,所有消息都会得到处理。这种行为现在是间歇性的,也找不到任何错误日志。

有人遇到过类似的问题吗?这是我的 JMS Config 类的一个片段:

    @Bean(initMethod = "init",destroyMethod = "close",name = "connectionFactory")
    public ConnectionFactory connectionFactory() throws JMSException,MalformedURLException {
        MQxaConnFactory ibmMQXAConnFactory = new MQxaConnFactory();
        AtomikosConnectionfactorybean xaConnFactory = new AtomikosConnectionfactorybean();

        try {
            
            URL chanTab1 = new URL(ccdtConnUrl);
            ibmMQXAConnFactory.setCCDTURL(chanTab1);
            ibmMQXAConnFactory.createXAConnection("mqm","");
            ibmMQXAConnFactory.setClientReconnectOptions(WMQConstants.WMQ_CLIENT_RECONNECT);
             ibmMQXAConnFactory.setClientReconnectTimeout(1800);
            xaConnFactory.setxaConnFactory(ibmMQXAConnFactory);
            xaConnFactory.setMinPoolSize(10);
            xaConnFactory.setMaxPoolSize(50);
            xaConnFactory.setUniqueResourceName("xxxxxx");
        } catch (Exception e) {
            e.printstacktrace();
        }
        return xaConnFactory;
    }
        
@Bean(name = "jmsContainer")
    public DefaultMessageListenerContainer defaultjmsContainer() throws Exception {
    
        DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
        container.setConnectionFactory(connectionFactory());
        container.setDestination(gpssomeappNotify());
        container.setMessageListener(appMessageListenerMDB());
        container.setMaxConcurrentConsumers(1);
        container.setSessionTransacted(true);
        container.setTransactionManager(transactionManager);
        container.setAutoStartup(someappReadQueueFlag);
        container.setTaskExecutor(myTaskExecutor());
        return container;
    }

解决方法

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

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

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