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

11.1. 禁用事务JMS会话

如果您的JMS代理不支持事务会话,则必须完全禁用事务支持。如果您创建自己的JmsListenerContainerFactory,则无所事事,因为默认情况下无法进行交易。如果您想使用DefaultJmsListenerContainerFactoryConfigurer来重用Spring Boot的默认设置,则可以禁用事务性会话,如下所示:

  1. @Bean
  2. public DefaultJmsListenerContainerFactory jmsListenerContainerFactory(
  3. ConnectionFactory connectionFactory,
  4. DefaultJmsListenerContainerFactoryConfigurer configurer) {
  5. DefaultJmsListenerContainerFactory listenerFactory =
  6. new DefaultJmsListenerContainerFactory();
  7. configurer.configure(listenerFactory, connectionFactory);
  8. listenerFactory.setTransactionManager(null);
  9. listenerFactory.setSessionTransacted(false);
  10. return listenerFactory;
  11. }

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