RabbitMQ:ConnectionFactory给出“拒绝连接”的信息,但我可以全部写成一个.to()

时间:2018-06-26 03:53:06

标签: spring-boot rabbitmq apache-camel spring-rabbitmq spring-camel

新的骆驼用户在这里。

我有一个Spring Boot / Camel应用程序,并成功通过了一个路由工作,该路由轮询一个REST端点,将JSON数组拆分为自定义POJOS,将每个数组转换为我们的Protobuf文件之一,然后将protobuf文件写到RabbitMQ中。

到目前为止很好。

但是,调试和使最后一步工作(写到总线)花了我很多工作。基本上,我永远无法使用ConnectionFactory建立与总线的连接,而是最终通过使用 just 中的.to()语句将整个连接/写入总线,最终弄清楚了如何做到这一点。 DSL。

所以我真的很想知道我在使用ConnectionFactory做错了什么。任何帮助将不胜感激!

好的,这就是有效的方法:

(为清楚起见添加了换行符)

.to(“rabbitmq://hostname:5672/exchange?
    username=user&
    password=password&
    vhost=sandbox&
    exchangeType=topic&
    routingKey=routingkey&
    durable=false&
    autoDelete=false”);

实际上,我在这里有一个简单的问题:在没有连接池且每次写入时都建立连接的意义上,这样做上面的浪费吗?

好的,这是行不通的,并不断给我一个java.net.ConnectException: Connection refused错误:

RabbitMQEndpoint endpoint = new RabbitMQEndpoint();

endpoint.setHostname(“hostname”);
endpoint.setVhost(“sandbox”);
endpoint.setUsername(“user”);
endpoint.setPassword(“password”);
endpoint.setPortNumber(5672);
endpoint.setRoutingKey(“routingkey”);
endpoint.setExchangeName(“exchange”);

endpoint.setExchangeType(“topic”);
endpoint.setDurable(false);
endpoint.setAutoDelete(false);

Connection connectionFactory = new RabbitMQConnectionFactorySupport().createFactoryFor(endpoint);

那我想念什么?

关于它的价值,如果上述连接有效,我将使用以下.to()语句编写总线。看起来正确吗?特别是,我可以在“ rabbitmq:”之后指定任何内容来代替“ bogusbus”吗?

.to(“rabbitmq:bogusbus?exchangeType=topic&exchangeName=exchange&routingKey=routingkey”);

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

根据the documentation,您可以配置com.rabbitmq.client.ConnectionFactory,然后在您的路由中按以下方式引用它:

.to("rabbitmq:exchangeName?connectionFactory=#rabbitConnectionFactory&...")

rabbitConnectionFactory是您的bean注册表中连接工厂实例的bean名称(请注意所需的#)。

  

请注意,如果您引用connectionFactory,则会忽略URI上的所有连接选项!