如何通过MassTransit强制RabbitMQ使用IPv4而不是IPv6到v4后备?

问题描述

我在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以某种方式获取工厂。

我在api文档中什么地方都找不到该方法

或者,我需要做一些等效的事情(让RabbitMQ使用IPv4家族来解析IP地址)。

是否有办法通过反射到达ConnectionFactory?还有其他方法可以强制RabbitMQ仅通过v4进行解析吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)