Solace Client JMS:路由器不支持操作:路由器不支持事务会话

时间:2018-09-28 03:48:09

标签: spring jms solace

我正在尝试使用Sping Boot收听Solace端点,并且在运行我的应用程序时出现错误消息:

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.)

是否有一个配置参数,我可以将其设置为不使用事务会话。

谢谢

2 个答案:

答案 0 :(得分: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中找到。

答案 1 :(得分:0)

很好的答案。

要补充罗素的答案,在处理消费的方法中,在批注中,我们必须指定在上一步中创建的容器工厂bean。

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