我正在尝试使用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.)
是否有一个配置参数,我可以将其设置为不使用事务会话。
谢谢
答案 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)。
要启用本地交易,请执行以下操作:
allow‑transacted‑sessions
。direct transport
。详细信息可在Solace documentation中找到。
答案 1 :(得分:0)
很好的答案。
要补充罗素的答案,在处理消费的方法中,在批注中,我们必须指定在上一步中创建的容器工厂bean。
@JmsListener(destination = "TOPIC.TRX_PAYMENT", containerFactory = "jmsListenerContainerFactory")