Document how to disable JMS transacted session

Closes gh-7463
This commit is contained in:
Stephane Nicoll 2016-11-24 10:39:40 +01:00
parent 5e8ba5cef6
commit 0359b2f6f5

View File

@ -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