zac*_*ung 11 java activemq-classic apache-camel spring-boot
我在几个例子中注意到,使用camel配置activemq的常用方法是使用以下bean.我想知道Spring Boot是否已经默认配置了这些bean.我知道如果activemq jar在类路径上,则会创建一个默认的连接工厂,但是下面的内容呢?
<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>
Run Code Online (Sandbox Code Playgroud)
要么
@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);
}
Run Code Online (Sandbox Code Playgroud)
同时还有一些spring-boot-starters可用于让 ActiveMQ 和 Camel 在 Spring Boot 中运行。
ActiveMQ
从你的 pom开始spring-boot-starter-activemq:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
配置
看看可以通过此配置什么 - 其记录在附录 A 中。常见应用程序属性(搜索“activemq”和“jms”)。
替代方法:从我的角度来看,确定 Sprint Boot 中哪些可配置、哪些不可配置的最好方法是查看其auto-configuration机制:
骆驼
Apache Camel 提供了自己的Spring Boot 集成。基本上你还必须添加camel-spring-boot-starter:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring-boot-starter</artifactId>
<version>2.17.3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
配置
我还没有找到一个好的示例配置文件,所以再次查看一下通过CamelConfigurationProperties类公开的配置。
一般来说 - 就像您提到的 - 如果您没有找到通过此配置公开的所有属性,您可能最终会手动注册一些 bean。
| 归档时间: |
|
| 查看次数: |
5181 次 |
| 最近记录: |