zoukankan      html  css  js  c++  java
  • 3-在EasyNetQ上使用SSL连接(黄亮翻译)

    EasyNetQ可以通过SSL进行连接。这篇指南的作者Gordon Coulter最初为回应一个提问写的。

    首先,你必须仔细依据https://www.rabbitmq.com/ssl.html文章中的步骤。我花费了很多时间尝试让openssl这部分能运作起来,然后为了让他按我的需要去运作而不仅仅只是一个demo,我又花费了很多时间。

    第一次通过SSL让EasyNetQ运作时,在他们为了测试而做的可以运行的页面上的那点DotNet代码给我提供了很大帮助。我有一个简单的控制台程序,包涵了Rabbit和EasyNetQ代码,会在下面展示。此外使用了Rabbit logs。

    当你连接上后,管理界面的connection页面会显示一个小的SSL协议标签。你也在Overview 选项卡的端口监听表里看到443端口。

    代码如下:

    var connection = new ConnectionConfiguration();
    
    connection.Port = 443;
    connection.UserName = "user";
    connection.Password = "pass";
    connection.Product = "SSLTest";
    
    var host1 = new HostConfiguration();
    host1.Host = "rmq1.contoso.com";
    host1.Port = 443;
    host1.Ssl.Enabled = true;
    host1.Ssl.ServerName = "rmq1.contoso.com";
    host1.Ssl.CertPath = "c:\tmp\myclient.p12";
    host1.Ssl.CertPassphrase = "secret";
    
    var host2 = new HostConfiguration();
    host2.Host = "rmq2.contoso.com";
    host2.Port = 443;
    host2.Ssl.Enabled = true;
    host2.Ssl.ServerName = "rmq2.contoso.com";
    host2.Ssl.CertPath = "c:\tmp\myclient.p12";
    host2.Ssl.CertPassphrase = "secret";
    
    connection.Hosts = new List<HostConfiguration> { host1, host2 };
    
    connection.Validate();        //VERY IMPORTANT - DOES CONFIG AS WELL AS VALIDATION!
    
    var Bus = RabbitHutch.CreateBus(connection, services => services.Register<IEasyNetQLogger>(logger => new DoNothingLogger()));
    
    

    尽管在ConnectionConfiguration上有一个Ssl选项属性,但在HostConfiguration对象上设置Ssl选项属性是一个合适的地方。HostConfiguration对象上设置SSL选项可以支持集群的场景。注意,在上面代码中我们指定了两个HostConfiguration对象。假如一个挂了,EasyNetQ的持续连接功能将自动连接到下一个可用的主机。在这个主机上配置SSL在连接时就不会出现任何错误。

    假如你仅仅指定一个主机,你可以选择通过HostConfiguration对象去设置SSL选项,也可以直接用ConnectionConfiguration对象去设置。

    不要忘记调用Validate()方法。我最初跳过那儿(基本上我写的都是硬编码,因此可能没有什么错误需要验证)。但是,这个方法调用实际上回去应用一系列设置,为了确保连接运行是必要的。

    SslOption详情参见文档SslOption Class

    你可以尝试用官方的RabbitMQ .NET client去配置和测试,尝试去运行示例。首先要阐明,在你的项目做任何修改前,所有这些设置都被正确的描述在 Official RabbitMQ SSL documentation for .NET.

    原文地址:https://github.com/EasyNetQ/EasyNetQ/wiki/Connecting-with-SSL

  • 相关阅读:
    Redis
    多线程相关
    selenium操作浏览器的基本方法
    selenium之 webdriver与三大浏览器版本映射表(更新至v2.29)
    selenium安装及官方文档
    Python(3)_python对Json进行操作
    python类中的self参数和cls参数
    python3中shuffle函数
    Python3中assert断言
    python2和python3中range的区别
  • 原文地址:https://www.cnblogs.com/HuangLiang/p/EasyNetQ_SSL.html
Copyright © 2011-2022 走看看