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)。
启用本地交易:
- 在您的用户名使用的客户端配置文件中启用
allow‑transacted‑sessions
。
- 在您的 JMS 连接工厂中禁用
direct transport
。
可以在 Solace documentation 中找到完整的详细信息。
很好的回答。
为了补充 Russell 的回答,在处理消费的方法中,在注释中,我们必须指定在最后一步中创建的容器工厂 bean。
@JmsListener(destination = "TOPIC.TRX_PAYMENT", containerFactory = "jmsListenerContainerFactory")
我正在尝试使用 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)。
启用本地交易:
- 在您的用户名使用的客户端配置文件中启用
allow‑transacted‑sessions
。 - 在您的 JMS 连接工厂中禁用
direct transport
。
可以在 Solace documentation 中找到完整的详细信息。
很好的回答。
为了补充 Russell 的回答,在处理消费的方法中,在注释中,我们必须指定在最后一步中创建的容器工厂 bean。
@JmsListener(destination = "TOPIC.TRX_PAYMENT", containerFactory = "jmsListenerContainerFactory")