Spring AMQP和CachingConnectionFactory

时间:2017-10-30 10:19:57

标签: spring-amqp

如果我有一个带有两个地址的CachingConnectionFactory,我怎么能随时知道我连接的服务器?什么是从一个手动转换到另一个的最佳方式?

CachingConnectionFactory cf = new CachingConnectionFactory(factory);
String _addresses = host + ":" + port + "," + host2 + ":" + port2;
cf.setAddresses(_addresses);

由于

1 个答案:

答案 0 :(得分:2)

要了解您已连接的host/port,您应该先咨询目标NetworkConnection

/** Retrieve address of peer. */
InetAddress getAddress();

/** Retrieve port number of peer. */
int getPort();

控制该信息不是CachingConnectionFactory

另一方面,addresses选项恰恰是这个:

 * @param addrs an array of known broker addresses (hostname/port pairs) to try in order

请参阅com.rabbitmq.client.ConnectionFactory#createConnection()

因此,所有地址条目必须位于同一个群集中。否则,当同一名称可能用于不同服务器上的不同实体时,您可能会遇到意外行为。

要手动控制,我建议在运行时更改setAddresses()属性,或者使用不同订单的不同CachingConnectionFactory实例。