新的骆驼用户在这里。
我有一个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”);
非常感谢您的帮助!
答案 0 :(得分:0)
根据the documentation,您可以配置com.rabbitmq.client.ConnectionFactory
,然后在您的路由中按以下方式引用它:
.to("rabbitmq:exchangeName?connectionFactory=#rabbitConnectionFactory&...")
rabbitConnectionFactory
是您的bean注册表中连接工厂实例的bean名称(请注意所需的#
)。
请注意,如果您引用connectionFactory,则会忽略URI上的所有连接选项!