0

骆驼新用户在这里。

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

到现在为止还挺好。

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

所以我真的很想知道我在 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”);

非常感谢你的帮助!

4

1 回答 1

0

根据文档,您可以配置 acom.rabbitmq.client.ConnectionFactory然后在您的路线中按如下方式引用它:

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

rabbitConnectionFactorybean 注册表中连接工厂实例的 bean 名称在哪里(注意 required #)。

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

于 2018-06-27T09:45:17.250 回答