Added support for RabbitMQ SSL-secured connections

Change-Id: Ie11e926e72ae1e2f2840468afb2a7d1652b3553d
This commit is contained in:
Stan Lagun 2013-07-17 11:36:42 +04:00
parent b1e1b2dfae
commit a17e216a87
2 changed files with 24 additions and 5 deletions

View File

@ -30,7 +30,7 @@ namespace Mirantis.Murano.WindowsAgent
{
base.OnStart(args);
Log.Info("Version 0.3");
Log.Info("Version 0.4");
this.rabbitMqClient = new RabbitMqClient();

View File

@ -3,6 +3,9 @@ using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Net;
using System.Net.Security;
using System.Security.Authentication;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
using NLog;
@ -18,13 +21,29 @@ namespace Mirantis.Murano.WindowsAgent
static RabbitMqClient()
{
connectionFactory = new ConnectionFactory {
var ssl = new SslOption {
Enabled = bool.Parse(ConfigurationManager.AppSettings["rabbitmq.ssl"] ?? "false"),
Version = SslProtocols.Default,
AcceptablePolicyErrors = bool.Parse(ConfigurationManager.AppSettings["rabbitmq.allowInvalidCA"] ?? "true") ?
SslPolicyErrors.RemoteCertificateNameMismatch : SslPolicyErrors.None
};
var sslServerName = ConfigurationManager.AppSettings["rabbitmq.sslServerName"] ?? "";
ssl.ServerName = sslServerName;
if (String.IsNullOrWhiteSpace(sslServerName))
{
ssl.AcceptablePolicyErrors |= SslPolicyErrors.RemoteCertificateNameMismatch;
}
connectionFactory = new ConnectionFactory {
HostName = ConfigurationManager.AppSettings["rabbitmq.host"] ?? "localhost",
UserName = ConfigurationManager.AppSettings["rabbitmq.user"] ?? "guest",
Password = ConfigurationManager.AppSettings["rabbitmq.password"] ??"guest",
Protocol = Protocols.FromEnvironment(),
Protocol = Protocols.DefaultProtocol,
VirtualHost = ConfigurationManager.AppSettings["rabbitmq.vhost"] ?? "/",
RequestedHeartbeat = 10
Port = int.Parse(ConfigurationManager.AppSettings["rabbitmq.port"] ?? "5672"),
RequestedHeartbeat = 10,
Ssl = ssl
};
}
@ -45,7 +64,7 @@ namespace Mirantis.Murano.WindowsAgent
}
var session = connection.CreateModel();
session.BasicQos(0, 1, false);
//session.QueueDeclare(queueName, true, false, false, null);
session.QueueDeclare(queueName, true, false, false, null);
var consumer = new QueueingBasicConsumer(session);
var consumeTag = session.BasicConsume(queueName, false, consumer);
var e = (RabbitMQ.Client.Events.BasicDeliverEventArgs) consumer.Queue.Dequeue();