2015-11-26 29 views
8

Ich habe in mehreren Beispielen festgestellt, die übliche Weise, activemq mit Kamel zu konfigurieren ist mit den folgenden Bohnen. Ich würde gerne wissen, ob Spring Boot bereits eine dieser Bohnen standardmäßig konfiguriert. Ich weiß, dass, wenn die activemq jars auf dem Klassenpfad sind, eine Standard-Verbindungsfactory erstellt wird, aber was ist alles darunter?Camel und Activemq Setup mit 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> 

oder

@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); 
    } 

Antwort

1

Mittlerweile gibt es einige spring-boot-starters, die verwendet werden können, ActiveMQ haben und Kamel läuft im Frühling Stiefel.

ActiveMQ

beginnen mit spring-boot-starter-activemq in Ihrem pom:

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

Konfiguration

Werfen Sie einen Blick, was überhaupt durch diese konfigurierbar ist - seine in Appendix A. Common application properties dokumentiert (Suche nach " activemq 'und' jms ').

Alternative Ansatz: aus meiner Sicht, sein Bestes, um festzustellen, was in Sprint-Boot konfigurierbar ist und was nicht einen Blick auf ihre auto-configuration Mechanismus aufweist:

Camel eingestellt werden kann

Apache Camel bietet eigene Spring Boot integration. Grundsätzlich müssen Sie auch camel-spring-boot-starter hinzufügen:

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

Konfiguration

Ich habe keine gute Beispiel Konfigurationsdatei gefunden, so wieder, einen Blick auf Konfiguration ausgesetzt ist, durch CamelConfigurationProperties Klasse.

Im Allgemeinen - wie Sie bereits erwähnt haben - könnten Sie einige Ihrer Beans manuell registrieren, wenn Sie nicht alle Eigenschaften finden, die über diese Konfiguration verfügbar sind.