diff --git a/spring-boot-docs/src/main/asciidoc/howto.adoc b/spring-boot-docs/src/main/asciidoc/howto.adoc index 50774c58e2..2b12739c39 100644 --- a/spring-boot-docs/src/main/asciidoc/howto.adoc +++ b/spring-boot-docs/src/main/asciidoc/howto.adoc @@ -2104,6 +2104,39 @@ so you can see how to set things up. +[[howto-messaging]] +== Messaging + + + +[[howto-jms-disable-transaction]] +=== Disable transacted JMS session +If your JMS broker does not support transacted session, you will have to disable the +support of transactions altogether. If you create your own `JmsListenerContainerFactory` +there is nothing to do since it won't be transacted by default. If you want to use +the `DefaultJmsListenerContainerFactoryConfigurer` to reuse Spring Boot's default, you +can disable transacted session as follows: + +[source,java,indent=0] +---- + @Bean + public DefaultJmsListenerContainerFactory jmsListenerContainerFactory( + ConnectionFactory connectionFactory, + DefaultJmsListenerContainerFactoryConfigurer configurer) { + DefaultJmsListenerContainerFactory listenerFactory = + new DefaultJmsListenerContainerFactory(); + configurer.configure(listenerFactory, connectionFactory); + listenerFactory.setTransactionManager(null); + listenerFactory.setSessionTransacted(false); + return listenerFactory; + } +---- + +This overrides the default factory and this should be applied to any other factory that +your application defines, if any. + + + [[howto-batch-applications]] == Batch applications