Solace 客户端 JMS:路由器不支持操作:路由器不支持事务处理会话

Solace Client JMS : Operation Not supported on Router: Router doesn't support transacted sessions

我正在尝试使用 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.)

是否有我可以设置为不使用 t运行saction 会话的配置参数。

谢谢

您需要创建一个不使用事务的 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 中找到完整的详细信息。

很好的回答。

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

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