我正在尝试使用IList<string>
在C#rabbitMQ库中创建连接时的参数:
IConnection CreateConnection(IList 主机名) https://www.rabbitmq.com/releases/rabbitmq-dotnet-client/v3.6.1/rabbitmq-dotnet-client-3.6.1-client-htmldoc/html/type-RabbitMQ.Client.ConnectionFactory.html#method-M:RabbitMQ.Client.ConnectionFactory.CreateConnection(System.Collections.Generic.IList%7BSystem.String%7D)
我的代码如下:
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
参数它似乎没有连接(我得到“没有一个指定的端点是可访问的”)
即使我的列表只包含一个元素。
现在,如果我使用single像这样的主机实现,它可以正常工作:
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 建议不要在客户端上存储主机集,但我只是想让他们提供的方法起作用。