2015-11-26 26 views
8

Ho notato in diversi esempi, il modo comune per configurare activemq con cammello è con i seguenti fagioli. Mi piacerebbe sapere se Spring Boot configura già uno di questi bean per impostazione predefinita. So che se i jar di activemq sono sul percorso di classe, viene creato un factory di connessione predefinito, ma per quanto riguarda tutto ciò che segue?Configurazione Camel e Activemq con Spring Boot

<bean id="jmsConnectionFactory" 
     class="org.apache.activemq.ActiveMQConnectionFactory"> 
    <property name="brokerURL" value="tcp://localhost:61616"/> 
    </bean> 

    <bean id="pooledConnectionFactory" 
     class="org.apache.activemq.pool.PooledConnectionFactory" 
     init-method="start" destroy-method="stop"> 
    <property name="maxConnections" value="8"/> 
    <property name="connectionFactory" ref="jmsConnectionFactory"/> 
    </bean> 

    <bean id="jmsConfig" 
     class="org.apache.camel.component.jms.JmsConfiguration"> 
    <property name="connectionFactory" ref="pooledConnectionFactory"/> 
    <property name="concurrentConsumers" value="10"/> 
    </bean> 

    <bean id="jms" 
     class="org.apache.activemq.camel.component.ActiveMQComponent"> 
    <property name="configuration" ref="jmsConfig"/> 
    <property name="transacted" value="true"/> 
    <property name="cacheLevelName" value="CACHE_CONSUMER"/> 
    </bean> 

o

@Bean 
    public ActiveMQConnectionFactory getConnectionFactory() { 
     ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(); 
     connectionFactory.setBrokerURL(brokerURL); 
     return connectionFactory; 
    } 

    @Bean(initMethod = "start", destroyMethod = "stop") 
    public PooledConnectionFactory getPooledConnectionFactory() { 
     PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory(); 
     pooledConnectionFactory.setMaxConnections(maxConnections); 
     pooledConnectionFactory.setConnectionFactory(getConnectionFactory()); 
     return pooledConnectionFactory; 
    } 

    @Bean 
    public JmsConfiguration getJmsConfiguration() { 
     JmsConfiguration jmsConfiguration = new JmsConfiguration(); 
     jmsConfiguration.setConnectionFactory(getPooledConnectionFactory()); 
     return jmsConfiguration; 
    } 

    @Bean 
    public JmsConfiguration getJmsHighPriorityConfiguration() { 
     JmsConfiguration jmsConfiguration = new JmsConfiguration(); 
     jmsConfiguration.setConnectionFactory(getPooledConnectionFactory()); 
     jmsConfiguration.setPriority(8); 
     return jmsConfiguration; 
    } 

    @Override 
    protected void setupCamelContext(CamelContext camelContext) throws Exception { 
     ActiveMQComponent activeMQComponent = new ActiveMQComponent(); 
     activeMQComponent.setConfiguration(getJmsConfiguration()); 
     camelContext.addComponent("activemq", activeMQComponent); 

     ActiveMQComponent activeMQHighPriorityComponent = new ActiveMQComponent(); 
     activeMQHighPriorityComponent.setConfiguration(getJmsHighPriorityConfiguration()); 
     camelContext.addComponent("activemq-high-priority", activeMQHighPriorityComponent); 
    } 

risposta

1

Nel frattempo ci sono alcuni spring-boot-starters che può essere usato per avere ActiveMQ e Camel in esecuzione all'interno di Primavera di avvio.

ActiveMQ

Inizia con spring-boot-starter-activemq nel pom:

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-activemq</artifactId> 
</dependency> 

configurazione

Date un'occhiata cosa è configurabile attraverso questo a tutti - la sua documentata in Appendix A. Common application properties (cercare ' activemq 'e' jms ').

approccio alternativo: dal mio punto di vista, del suo meglio per determinare ciò che è configurabile in Sprint Boot e ciò che non è avere uno sguardo al loro auto-configuration meccanismo:

cammello

Apache Camel fornisce il proprio Spring Boot integration. In pratica dovete anche aggiungere camel-spring-boot-starter:

<dependency> 
    <groupId>org.apache.camel</groupId> 
    <artifactId>camel-spring-boot-starter</artifactId> 
    <version>2.17.3</version> 
</dependency> 

configurazione

non ho trovato un buon file di configurazione di esempio, in modo nuovo, hanno uno sguardo a configurazione viene esposto attraverso CamelConfigurationProperties classe.

In generale, come hai detto tu, potresti finire a registrare manualmente alcuni dei tuoi bean se non trovi tutte le proprietà esposte tramite questa configurazione.

Problemi correlati