Rabbitmq 骆驼弹簧靴自动配置

Posted

技术标签:

【中文标题】Rabbitmq 骆驼弹簧靴自动配置【英文标题】:Rabbitmq camel spring boot auto config 【发布时间】:2017-12-21 05:02:59 【问题描述】:

我有如下配置的骆驼和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 Boot 自动装配。我觉得我通过添加自定义 CamelConfig > rabbitConnectionFactory 来复制 bean?它没有使用 RabbitAutoconfiguration?

2) 当我使用连接工厂时,我引用了rabbitmq-url 和端口两次?我将它添加到 rabbitConnectionFactory bean 对象和骆驼 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 )

【问题讨论】:

【参考方案1】:

通过查看 github 上较新的文档找到。

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

.to(rabbitmq:exchangeName?options

下面的完整骆驼路线示例

.to(rabbitmq:exchangeName?queueName&exchangeType=direct&connectionFactory=#rabbitConnectionFactory&autoDelete=false

这里是网址:

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

【讨论】:

以上是关于Rabbitmq 骆驼弹簧靴自动配置的主要内容,如果未能解决你的问题,请参考以下文章

弹簧靴总是使用相同的配置文件

带有 jetty 9 和 ssl 的弹簧靴

带有弹簧靴的百里香叶缓存

弹簧靴。 CORS。 'allowCredentials = false' 不起作用

弹簧靴。请求无法到达控制器

弹簧靴和 h2。无法更改数据库名称