Rabbitmq camel spring boot auto config

Rob*_*_UK 6 configuration apache-camel autowired spring-boot spring-rabbitmq

我有骆驼和rabbitmq配置如下,它正在工作.我希望改进配置设置.

的pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-rabbitmq-starter</artifactId>
    <version>2.19.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

application.yml

spring: 
  rabbitmq:
    host: rabbithost-url
    port: 5672
    username: my-user
    password: my-password
Run Code Online (Sandbox Code Playgroud)

配置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;
    }
}
Run Code Online (Sandbox Code Playgroud)

路线示例

@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();
    }
}
Run Code Online (Sandbox Code Playgroud)

想改善以下几点?或者至少看看它是否可能?

1) 如何利用spring boot autowiring.我想通过添加自定义CamelConfig> rabbitConnectionFactory来复制bean吗?它没有使用RabbitAutoconfiguration?

2) 当我使用连接工厂时,我引用了rabbitmq-url和端口两次?我将它添加到rabbitConnectionFactory bean对象和camel url中?例如

.to("rabbitmq://rabbithost-url:5672/ ..etc.. &connectionFactory=#rabbitConnectionFactory")
Run Code Online (Sandbox Code Playgroud)

我不能只在连接工厂中引用一次吗?尝试以下没有主机,因为它包含在connectionFactory中,但它不起作用.

.to("rabbitmq://TEST-QUEUE.exchange?queue=TEST-QUEUE.queue&autoDelete=false&connectionFactory=#rabbitConnectionFactory")
Run Code Online (Sandbox Code Playgroud)

我使用的第一个工作示例是基于此. camel.apache.org/rabbitmq示例(请参阅自定义连接工厂)

Rob*_*_UK 4

通过查看 github 上的较新文档发现。

请注意,现在路线开头不需要 url。

.to(rabbitmq:exchangeName?options

下面是完整的骆驼路线示例

.to(rabbitmq:exchangeName?queueName&exchangeType=direct&connectionFactory=#rabbitConnectionFactory&autoDelete=false
Run Code Online (Sandbox Code Playgroud)

这是网址:

https://github.com/apache/camel/blob/master/components/camel-rabbitmq/src/main/docs/rabbitmq-component.adoc