From 0359b2f6f5c40850884a82dc98d5f3fccae1b48a Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Thu, 24 Nov 2016 10:39:40 +0100 Subject: [PATCH] Document how to disable JMS transacted session Closes gh-7463 --- spring-boot-docs/src/main/asciidoc/howto.adoc | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/spring-boot-docs/src/main/asciidoc/howto.adoc b/spring-boot-docs/src/main/asciidoc/howto.adoc index 8dd458f344d..21688bb76de 100644 --- a/spring-boot-docs/src/main/asciidoc/howto.adoc +++ b/spring-boot-docs/src/main/asciidoc/howto.adoc @@ -2134,6 +2134,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