如果我有一个带有两个地址的CachingConnectionFactory,我怎么能随时知道我连接的服务器?什么是从一个手动转换到另一个的最佳方式?
CachingConnectionFactory cf = new CachingConnectionFactory(factory);
String _addresses = host + ":" + port + "," + host2 + ":" + port2;
cf.setAddresses(_addresses);
由于
答案 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
实例。