RabbitMQ:ConnectionFactory 给出 "Connection refused" 但我可以将所有内容写在一个 .to() 中
RabbitMQ: ConnectionFactory gives "Connection refused" yet I can write all in one .to()
这里是 Camel 新用户。
我有一个 Spring Boot / Camel 应用程序,并成功地获得了一个工作路由,该路由轮询 REST 端点,将 JSON 数组拆分为自定义 POJOS,将每个转换为我们的 Protobufs 之一,然后将 protobuf 写入我们的 RabbitMQ。
到目前为止一切顺利。
但是,我花了很多时间来调试并使最后一步工作(写到总线)。基本上,我永远无法使用 ConnectionFactory 建立与总线的连接,而是最终想出了如何通过使用 just 将整个 connection/writing 放到总线上来做到这一点。 () 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”);
非常感谢您的帮助!
根据the documentation你可以配置一个com.rabbitmq.client.ConnectionFactory
然后在你的路由中引用如下:
.to("rabbitmq:exchangeName?connectionFactory=#rabbitConnectionFactory&...")
其中 rabbitConnectionFactory
是您的 bean 注册表中连接工厂实例的 bean 名称(注意需要的 #
)。
Take care that all connection options on the URI are ignored if you reference a connectionFactory!
这里是 Camel 新用户。
我有一个 Spring Boot / Camel 应用程序,并成功地获得了一个工作路由,该路由轮询 REST 端点,将 JSON 数组拆分为自定义 POJOS,将每个转换为我们的 Protobufs 之一,然后将 protobuf 写入我们的 RabbitMQ。
到目前为止一切顺利。
但是,我花了很多时间来调试并使最后一步工作(写到总线)。基本上,我永远无法使用 ConnectionFactory 建立与总线的连接,而是最终想出了如何通过使用 just 将整个 connection/writing 放到总线上来做到这一点。 () 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”);
非常感谢您的帮助!
根据the documentation你可以配置一个com.rabbitmq.client.ConnectionFactory
然后在你的路由中引用如下:
.to("rabbitmq:exchangeName?connectionFactory=#rabbitConnectionFactory&...")
其中 rabbitConnectionFactory
是您的 bean 注册表中连接工厂实例的 bean 名称(注意需要的 #
)。
Take care that all connection options on the URI are ignored if you reference a connectionFactory!