4 JMS Configuration and Usage - Reference Documentation
Authors: Burt Beckwith
Version: 1.0
4 JMS Configuration and Usage
If you have the JMS plugin installed, an XA Atomikos connection factory will be configured and your JMS template(s) and message listeners (e.g. services using annotations orstatic exposes = 'jms') will be configured to use XA. You still need to configure the jmsConnectionFactory bean since this is provider-specific (e.g. ActiveMQ), and you need to ensure that you create an XA connection factory, e.g.jmsConnectionFactory(org.apache.activemq.ActiveMQXAConnectionFactory) {
brokerURL = 'vm://localhost'
}JmsTemplate
By default the JMS plugin creates aJmsTemplate as the standardJmsTemplate bean. It (and any other JmsTemplate beans in the ApplicationContext) will be updated to use the XA connection factory. If you want to skip this enhancement for a JmsTemplate, add a configuration option for the grails.plugin.atomikos.convert.<beanname> attribute for each one in grails-app/conf/Config.groovy, e.g.:grails.plugin.atomikos.convert.standardJmsTemplate = falseListeners
Typically when using the JMS plugin, you use services as message listeners. A DefaultMessageListenerContainer bean will be configured and by default it will be updated to use XA for message handling. This way a JMS message sent in a transaction that gets rolled back will not be delivered.If you want to skip this enhancement for a listener, add a configuration option for thegrails.plugin.atomikos.convert.<beanname> attribute for each one in grails-app/conf/Config.groovy. The bean name will typically be the service bean name without the 'Service' suffix, and with the 'JmsListenerContainer' suffix added. So for example if you have a MyMessageService service configured as a listener, its corresponding wrapper bean name will be myMessageJmsListenerContainer, so to disable XA configuration for this listener add this line to Config.groovy:grails.plugin.atomikos.convert.messageTestJmsListenerContainer = false