Spring AMQP 和 CachingConnectionFactory

Spring AMQP and CachingConnectionFactory

如果我有一个带有两个地址的 CachingConnectionFactory,我如何随时知道我连接到哪个服务器?手动从一个更改为另一个的最佳方法是什么?

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

谢谢

要知道你连接的 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 实例。