我試圖創建在C#的RabbitMQ庫連接時使用IList<string>
參數:如何使用主機連接參數的RabbitMQ的名單
IConnection CreateConnection(IList hostnames)
我的代碼如下:
private IConnection CreateConnection()
{
var connectionFactory = new ConnectionFactory
{
UserName = _userName,
Password = _password,
VirtualHost = _vhost,
AutomaticRecoveryEnabled = DEFAULT_AUTO_RECOVER,
RequestedHeartbeat = HEARTBEAT_TIMEOUT_SECONDS,
Port = AmqpTcpEndpoint.UseDefaultPort,
};
// _hosts contains valid IPs "###.###.###.###"
return connectionFactory.CreateConnection(_hosts);
}
但無論我想爲hosts
參數它似乎並沒有連接(我得到「沒有指定的終點可達」)
即使我的列表只包含一個元素。現在
,如果我使用單主機實現這樣的,它工作正常:
private IConnection CreateConnection()
{
var connectionFactory = new ConnectionFactory
{
UserName = _userName,
Password = _password,
VirtualHost = _vhost,
AutomaticRecoveryEnabled = DEFAULT_AUTO_RECOVER,
RequestedHeartbeat = HEARTBEAT_TIMEOUT_SECONDS,
Port = AmqpTcpEndpoint.UseDefaultPort,
HostName = _hosts.First() // or just one string
};
return connectionFactory.CreateConnection();
}
我承認,RabbitMQ的建議不保存設置客戶端的主機,但我只是想讓他們提供的方法工作。
奇怪,因爲根據最新的[source](https://github.com/rabbitmq/rabbitmq-dotnet-client/blob/e8f0a3aca3ab16ca3f2537dbc78543c91ff58f92/projects/client/RabbitMQ.Client/src/client/api/ConnectionFactory。 cs#L349)'connectionFactory.CreateConnection();'calls'CreateConnection(new List(){HostName},null);' –
是的。如果我發送一個項目的清單,它的作品。也許我的測試方法是不正確的。我瞭解這種方法,試圖通過列表中的所有成員來查找節點。 – Matthew