问题描述
我在RabbitMQ客户端代码中遇到ArgumentException,因为RabbitMQ(通过Masstransit)试图先通过IPv6然后通过IPv4解析主机名,这会导致异常。使用IPv4地址代替主机无所谓。
到达RabbitMQ主机没有问题(即主机可ping通,并且可以通过telnet绑定端口)。
RabbitMQ客户端驱动程序中的lines of code,
if (_socket is null)
{
IPAddress ipv4 = TcpClientAdapterHelper.GetMatchingHost(adds,AddressFamily.InterNetwork);
if (ipv4 == default(IPAddress))
{
throw new ConnectFailureException("Connection Failed",new ArgumentException($"No ip address Could be resolved for {endpoint.HostName}"));
}
_socket = ConnectUsingIPv4(new IPEndPoint(ipv4,endpoint.Port),socketFactory,connectionTimeout);
}
似乎显示在哪里引发了异常,这表明我需要 将RabbitMQ的DefaultAddressFamily类上的ConnectionFactory设置为Unspecified或IPv4(不确定哪个)。为此,我假设我必须通过Masstransit API以某种方式获取工厂。
或者,我需要做一些等效的事情(让RabbitMQ使用IPv4家族来解析IP地址)。
是否有办法通过反射到达ConnectionFactory
?还有其他方法可以强制RabbitMQ仅通过v4进行解析吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)