Я новичок в rabbitmq, но мне нужно подключиться к удаленному брокеру, чтобы отправлять и получать сообщения.Удаленный сервер находится вне моего контроля, и почти невозможно получить ответы от его команды.Тем не менее, в моем распоряжении есть адрес, порт, виртуальный хост и учетные данные пользователя.Сервер использует TLS v1.2.Проблема в том, что я не могу установить соединение с сервером с клиентом .NET.Клиент - это «rabbitmq.client.5.1.0», .NET Framework 4.5.1 и VS 2017. Мой код:
public bool Start() {
try {
var f = new ConnectionFactory();
f.UserName = "TestUser";
f.Password = "TestPwd";
f.HostName = "x.x.x.x";
f.Port = 5673;
f.VirtualHost = "TestVH";
f.Ssl.Version = SslProtocols.Tls12;
f.Ssl.Enabled = true;
f.Ssl.AcceptablePolicyErrors = SslPolicyErrors.RemoteCertificateChainErrors
| SslPolicyErrors.RemoteCertificateNameMismatch
| SslPolicyErrors.RemoteCertificateNotAvailable;
var c = f.CreateConnection();
} catch( Exception e ) {
throw e;
}
}
Выдает исключение, внутренняя часть которого:
Ошибка аутентификации, поскольку удаленная сторона закрыла транспортный поток.
( Захват Wireshark ).
Если я делаю это с Java (1.8, amqp-client-4.0.2
), Я могу успешно подключиться к серверу.
public static void main( String[] args ) throws Exception{
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("x.x.x.x");
factory.setPort(5673);
factory.setUsername( "TestUser" );
factory.setPassword( "TestPwd" );
factory.setVirtualHost( "TestVH" );
factory.useSslProtocol("TLSv1.2");
Connection conn = factory.newConnection();
}
захват Wireshark
Я хотел бы использовать C #, чтобы выполнить работу, но я не могу отсортировать этовещь внеЛюбая помощь будет принята с благодарностью!