86. Messaging

Spring Boot 提供了许多 Starter,包括消息传递。本部分回答了将消息与 Spring Boot 一起使用所引起的问题。

86.1 禁用事务 JMS 会话

如果您的 JMS 代理不支持事务处理会话,则必须完全禁用对事务的支持。如果您创建自己的JmsListenerContainerFactory,则无需执行任何操作,因为默认情况下无法进行处理。如果您想使用DefaultJmsListenerContainerFactoryConfigurer重用 Spring Boot 的默认值,则可以禁用事务性会话,如下所示:

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

上面的示例将覆盖默认工厂,并且应将其应用于应用程序定义的任何其他工厂(如果有)。