【问题标题】:Solace Client JMS : Operation Not supported on Router: Router doesn't support transacted sessionsSolace Client JMS:路由器不支持操作:路由器不支持事务会话
【发布时间】:2020-03-12 11:18:53
【问题描述】:

我正在尝试使用 Sping Boot 收听 Solace End Point,但在运行我的应用程序时出现错误:

2018-09-28 03:16:57.446  WARN 27305 --- [enerContainer-1] o.s.j.l.DefaultMessageListenerContainer  : Setup of JMS message listener invoker failed for destination 'TEST1.OUT' - trying to recover. Cause: Error creating session - operation not supported on router (Capability Mismatch: Router does not support transacted sessions.)

是否有我可以设置为不使用事务会话的配置参数。

谢谢

【问题讨论】:

    标签: spring jms solace


    【解决方案1】:

    您需要创建一个不使用事务的JmsListenerContainerFactory。例如:

    @Bean
    public DefaultJmsListenerContainerFactory jmsListenerContainerFactory(
            ConnectionFactory connectionFactory,
            DefaultJmsListenerContainerFactoryConfigurer configurer) {
        DefaultJmsListenerContainerFactory listenerFactory =
                new DefaultJmsListenerContainerFactory();
        configurer.configure(listenerFactory, connectionFactory);
        listenerFactory.setTransactionManager(null);
        listenerFactory.setSessionTransacted(false);
        return listenerFactory;
    }
    

    详情请见spring boot docs


    请注意,Solace 消息代理支持事务(本地和 XA)。

    启用本地事务:

    1. 在您的用户名使用的客户端配置文件中启用allow‑transacted‑sessions
    2. 在您的 JMS 连接工厂中禁用 direct transport

    详情请见Solace documentation

    【讨论】:

    • 感谢您的意见。
    【解决方案2】:

    很好的答案。

    为了补充 Russell 的回答,在处理消费的方法中,在注解中,我们必须指定上一步创建的容器工厂 bean。

    @JmsListener(destination = "TOPIC.TRX_PAYMENT", containerFactory = "jmsListenerContainerFactory")
    

    【讨论】:

      猜你喜欢
      • 2021-07-04
      • 2019-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-04
      • 2015-05-22
      • 2019-08-23
      • 2019-11-14
      相关资源
      最近更新 更多