Rabbitmq camel spring 启动自动配置
Rabbitmq camel spring boot auto config
我已经像下面这样配置了 camel 和 rabbitmq,并且可以正常工作。我希望改进配置设置。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-rabbitmq-starter</artifactId>
<version>2.19.1</version>
</dependency>
application.yml
spring:
rabbitmq:
host: rabbithost-url
port: 5672
username: my-user
password: my-password
配置 bean
@Configuration
public class CamelConfig {
@Resource private Environment env;
@Bean
public ConnectionFactory rabbitConnectionFactory(){
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost(env.getProperty("spring.rabbitmq.host"));
connectionFactory.setPort(Integer.valueOf(env.getProperty("spring.rabbitmq.port")));
connectionFactory.setAutomaticRecoveryEnabled(true);
// more config options here etc
return connectionFactory;
}
}
路线示例
@Component
public class MyRoute extends RouteBuilder {
@Override
public void configure() throws Exception {
from("direct:startQueuePoint")
.id("idOfQueueHere")
.to("rabbitmq://rabbithost-url:5672/TEST-QUEUE.exchange?queue=TEST-QUEUE.queue&autoDelete=false&connectionFactory=#rabbitConnectionFactory")
.end();
}
}
想改进以下内容吗?或者至少看看它是否可能?
1) 我如何利用 spring 引导自动装配。我觉得我通过添加自定义 CamelConfig > rabbitConnectionFactory 来复制 bean?它没有使用 RabbitAutoconfiguration?
2) 当我使用连接工厂时,我引用了 rabbitmq-url 和端口两次?我将它添加到 rabbitConnectionFactory bean 对象和 camel url?例如
.to("rabbitmq://rabbithost-url:5672/ ..etc.. &connectionFactory=#rabbitConnectionFactory")
我不能在连接工厂中只引用一次吗?在没有主机的情况下尝试了以下操作,因为它包含在 connectionFactory 中,但没有成功。
.to("rabbitmq://TEST-QUEUE.exchange?queue=TEST-QUEUE.queue&autoDelete=false&connectionFactory=#rabbitConnectionFactory")
我正在使用的第一个工作示例基于此。
camel.apache.org/rabbitmq example (see Custom connection factory )
通过查看 github 上较新的文档发现。
请注意,现在路线起点不需要 url。
.to(rabbitmq:exchangeName?options
下面是完整的骆驼路线示例
.to(rabbitmq:exchangeName?queueName&exchangeType=direct&connectionFactory=#rabbitConnectionFactory&autoDelete=false
这里是url:
我已经像下面这样配置了 camel 和 rabbitmq,并且可以正常工作。我希望改进配置设置。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-rabbitmq-starter</artifactId>
<version>2.19.1</version>
</dependency>
application.yml
spring:
rabbitmq:
host: rabbithost-url
port: 5672
username: my-user
password: my-password
配置 bean
@Configuration
public class CamelConfig {
@Resource private Environment env;
@Bean
public ConnectionFactory rabbitConnectionFactory(){
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost(env.getProperty("spring.rabbitmq.host"));
connectionFactory.setPort(Integer.valueOf(env.getProperty("spring.rabbitmq.port")));
connectionFactory.setAutomaticRecoveryEnabled(true);
// more config options here etc
return connectionFactory;
}
}
路线示例
@Component
public class MyRoute extends RouteBuilder {
@Override
public void configure() throws Exception {
from("direct:startQueuePoint")
.id("idOfQueueHere")
.to("rabbitmq://rabbithost-url:5672/TEST-QUEUE.exchange?queue=TEST-QUEUE.queue&autoDelete=false&connectionFactory=#rabbitConnectionFactory")
.end();
}
}
想改进以下内容吗?或者至少看看它是否可能?
1) 我如何利用 spring 引导自动装配。我觉得我通过添加自定义 CamelConfig > rabbitConnectionFactory 来复制 bean?它没有使用 RabbitAutoconfiguration?
2) 当我使用连接工厂时,我引用了 rabbitmq-url 和端口两次?我将它添加到 rabbitConnectionFactory bean 对象和 camel url?例如
.to("rabbitmq://rabbithost-url:5672/ ..etc.. &connectionFactory=#rabbitConnectionFactory")
我不能在连接工厂中只引用一次吗?在没有主机的情况下尝试了以下操作,因为它包含在 connectionFactory 中,但没有成功。
.to("rabbitmq://TEST-QUEUE.exchange?queue=TEST-QUEUE.queue&autoDelete=false&connectionFactory=#rabbitConnectionFactory")
我正在使用的第一个工作示例基于此。 camel.apache.org/rabbitmq example (see Custom connection factory )
通过查看 github 上较新的文档发现。
请注意,现在路线起点不需要 url。
.to(rabbitmq:exchangeName?options
下面是完整的骆驼路线示例
.to(rabbitmq:exchangeName?queueName&exchangeType=direct&connectionFactory=#rabbitConnectionFactory&autoDelete=false
这里是url: