Fix order of JMS auto configuration
Add additional @AutoConfigureAfter elements to ActiveMQAutoConfiguration and HornetQAutoConfiguration to ensure that they are configured after JndiConnectionFactoryAutoConfiguration. The possible sources for a JMS ConnectionFactory are: 1. JNDI 2. HornetQ (embedded broker or an external broker) 3. ActiveMQ (embedded broker or an external broker) The last two auto configurations must run after JTA auto-configuration has completed as it may register additional beans that are necessary to enable XA. Previously, the HornetQ embedded broker would start regardless of the presence of a ConnectionFactory as a ConditionalOnMissingBean was missing. Furthermore, there was no order condition for the JNDI auto-configuration so it may just run after one of the broker has been found. JNDI takes now precedence to be consistent with the regular DataSource auto configuration. Fixes gh-1821
This commit is contained in:
parent
3e565bf421
commit
630c145645
|
@ -25,6 +25,7 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
|||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.jms.JndiConnectionFactoryAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.jta.JtaAutoConfiguration;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
@ -41,7 +42,8 @@ import org.springframework.context.annotation.Import;
|
|||
*/
|
||||
@Configuration
|
||||
@AutoConfigureBefore(JmsAutoConfiguration.class)
|
||||
@AutoConfigureAfter(JtaAutoConfiguration.class)
|
||||
@AutoConfigureAfter({ JtaAutoConfiguration.class,
|
||||
JndiConnectionFactoryAutoConfiguration.class })
|
||||
@ConditionalOnClass({ ConnectionFactory.class, ActiveMQConnectionFactory.class })
|
||||
@ConditionalOnMissingBean(ConnectionFactory.class)
|
||||
@EnableConfigurationProperties(ActiveMQProperties.class)
|
||||
|
|
|
@ -19,10 +19,14 @@ package org.springframework.boot.autoconfigure.jms.hornetq;
|
|||
import javax.jms.ConnectionFactory;
|
||||
|
||||
import org.hornetq.api.jms.HornetQJMSClient;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.jms.JndiConnectionFactoryAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.jta.JtaAutoConfiguration;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Import;
|
||||
|
@ -40,7 +44,10 @@ import org.springframework.context.annotation.Import;
|
|||
*/
|
||||
@Configuration
|
||||
@AutoConfigureBefore(JmsAutoConfiguration.class)
|
||||
@AutoConfigureAfter({ JtaAutoConfiguration.class,
|
||||
JndiConnectionFactoryAutoConfiguration.class })
|
||||
@ConditionalOnClass({ ConnectionFactory.class, HornetQJMSClient.class })
|
||||
@ConditionalOnMissingBean(ConnectionFactory.class)
|
||||
@EnableConfigurationProperties(HornetQProperties.class)
|
||||
@Import({ HornetQEmbeddedServerConfiguration.class,
|
||||
HornetQXAConnectionFactoryConfiguration.class,
|
||||
|
|
Loading…
Reference in New Issue