Beispiel #1
0
        /// <summary>
        /// Configures the rabbit mq client connection for Sll properties.
        /// </summary>
        /// <param name="builder">Builder with appropriate properties set.</param>
        /// <returns>A connection factory builder</returns>
        /// <remarks>
        /// SSL configuration in Rabbit MQ is a complex topic.  In order to ensure that rabbit can work without client presenting a client certificate
        /// and working just like an SSL enabled web-site which does not require certificate you need to have the following settings in your rabbitmq.config
        /// file.
        ///      {ssl_options, [{cacertfile,"/path_to/cacert.pem"},
        ///            {certfile,"/path_to/server/cert.pem"},
        ///            {keyfile,"/path_to/server/key.pem"},
        ///            {verify,verify_none},
        ///            {fail_if_no_peer_cert,false}]}
        /// The last 2 lines are the important ones.
        /// </remarks>
        public ConnectionFactoryBuilder Configure(ConnectionFactoryBuilder builder)
        {
            builder.Add(connectionFactory =>
            {
                connectionFactory.Ssl.Enabled = true;
                if (!_clientCertificateRequired)
                {
                    // These properties need to be set as empty for the Rabbit MQ client. Null's cause an exception in the client library.
                    connectionFactory.Ssl.CertPath       = string.Empty;
                    connectionFactory.Ssl.CertPassphrase = string.Empty;
                    connectionFactory.Ssl.ServerName     = string.Empty;
                    // Because no client certificate is present we must allow the remote certificate name mismatch for the connection to succeed.
                    _acceptablePolicyErrors = _acceptablePolicyErrors
                                              | SslPolicyErrors.RemoteCertificateNameMismatch;
                }
                else
                {
                    connectionFactory.Ssl.CertPath       = _certificatePath;
                    connectionFactory.Ssl.CertPassphrase = _passphrase;
                    connectionFactory.Ssl.ServerName     = _serverName;
                }
                connectionFactory.Ssl.AcceptablePolicyErrors = _acceptablePolicyErrors;
                connectionFactory.Ssl.Version = SslProtocols.Tls;

                return(connectionFactory);
            });

            return(builder);
        }
        /// <summary>
        /// Configures the rabbit mq client connection for Sll properties.
        /// </summary>
        /// <param name="builder">Builder with appropriate properties set.</param>
        /// <returns>A connection factory builder</returns>
        /// <remarks>
        /// SSL configuration in Rabbit MQ is a complex topic.  In order to ensure that rabbit can work without client presenting a client certificate
        /// and working just like an SSL enabled web-site which does not require certificate you need to have the following settings in your rabbitmq.config
        /// file.
        ///      {ssl_options, [{cacertfile,"/path_to/cacert.pem"},
        ///            {certfile,"/path_to/server/cert.pem"},
        ///            {keyfile,"/path_to/server/key.pem"},
        ///            {verify,verify_none},
        ///            {fail_if_no_peer_cert,false}]}
        /// The last 2 lines are the important ones.
        /// </remarks>
        public ConnectionFactoryBuilder Configure(ConnectionFactoryBuilder builder)
        {
            builder.Add(connectionFactory =>
                {
                    connectionFactory.Ssl.Enabled = true;
                    if (!_clientCertificateRequired)
                    {
                        // These properties need to be set as empty for the Rabbit MQ client. Null's cause an exception in the client library.
                        connectionFactory.Ssl.CertPath = string.Empty;
                        connectionFactory.Ssl.CertPassphrase = string.Empty;
                        connectionFactory.Ssl.ServerName = string.Empty;
                        // Because no client certificate is present we must allow the remote certificate name mismatch for the connection to succeed.
                        _acceptablePolicyErrors = _acceptablePolicyErrors
                                                  | SslPolicyErrors.RemoteCertificateNameMismatch;
                    }
                    else
                    {
                        connectionFactory.Ssl.CertPath = _certificatePath;
                        connectionFactory.Ssl.CertPassphrase = _passphrase;
                        connectionFactory.Ssl.ServerName = _serverName;
                    }
                    connectionFactory.Ssl.AcceptablePolicyErrors = _acceptablePolicyErrors;
                    connectionFactory.Ssl.Version = SslProtocols.Tls;

                    return connectionFactory;
                });

            return builder;
        }
Beispiel #3
0
        public RabbitMqTransportFactoryBuilder Configure(RabbitMqTransportFactoryBuilder builder)
        {
            ConnectionFactoryBuilder connectionFactoryBuilder = CreateBuilder();

            builder.AddConnectionFactoryBuilder(_address.Uri, connectionFactoryBuilder);

            return(builder);
        }
Beispiel #4
0
        public IConnectionFactoryBuilder CreateBuilder()
        {
            var connectionFactoryBuilder = new ConnectionFactoryBuilder(_address);

            _configurators.Aggregate((IConnectionFactoryBuilder)connectionFactoryBuilder,
                                     (seed, configurator) => configurator.Configure(seed));
            return(connectionFactoryBuilder);
        }
Beispiel #5
0
        public ConnectionFactoryBuilder Configure(ConnectionFactoryBuilder builder)
        {
            builder.Add(connectionFactory =>
            {
                connectionFactory.Ssl.Enabled                = true;
                connectionFactory.Ssl.ServerName             = _serverName;
                connectionFactory.Ssl.AcceptablePolicyErrors = _acceptablePolicyErrors;
                return(connectionFactory);
            });

            return(builder);
        }
        public ConnectionFactoryBuilder Configure(ConnectionFactoryBuilder builder)
        {
            builder.Add(connectionFactory =>
                {
                    connectionFactory.Ssl.Enabled = true;
                    connectionFactory.Ssl.CertPath = _certificatePath;
                    connectionFactory.Ssl.CertPassphrase = _passphrase;
                    connectionFactory.Ssl.ServerName = _serverName;
                    connectionFactory.Ssl.AcceptablePolicyErrors = _acceptablePolicyErrors;
                    connectionFactory.Ssl.Version = SslProtocols.Tls;

                    return connectionFactory;
                });

            return builder;
        }
Beispiel #7
0
        public ConnectionFactoryBuilder Configure(ConnectionFactoryBuilder builder)
        {
            builder.Add(connectionFactory =>
            {
                connectionFactory.Ssl.Enabled                = true;
                connectionFactory.Ssl.CertPath               = _certificatePath;
                connectionFactory.Ssl.CertPassphrase         = _passphrase;
                connectionFactory.Ssl.ServerName             = _serverName;
                connectionFactory.Ssl.AcceptablePolicyErrors = _acceptablePolicyErrors;
                connectionFactory.Ssl.Version                = SslProtocols.Tls;

                return(connectionFactory);
            });

            return(builder);
        }
Beispiel #8
0
        public override bool Execute()
        {
            RabbitEndpointAddress address = RabbitEndpointAddress.Parse(_uri);

            var connectionFactory = new ConnectionFactoryBuilder(address).Build();

            using (var connection = connectionFactory.CreateConnection())
            {
                using (IModel model = connection.CreateModel())
                {
                    model.QueuePurge(address.Name);
                }
            }

            return(true);
        }
Beispiel #9
0
        internal static List <OutputFile> ResolveSingleOutputFiles()
        {
            var outputFiles = new List <OutputFile>();

            if (MainInfoManager.EntityInformation.ConnectionFactory != null)
            {
                outputFiles.AddRange(ConnectionFactoryBuilder.Build());
            }
            if (MainInfoManager.EntityInformation.GenericRepository != null)
            {
                outputFiles.AddRange(GenericRepositoryBuilder.Build());
            }
            if (MainInfoManager.EntityInformation.DependencyInjection?.Modules != null)
            {
                outputFiles.AddRange(MainInfoManager.EntityInformation.DependencyInjection.Modules.Select(x => DependencyInjectionBuilder.Build(x)));
            }
            return(outputFiles);
        }
Beispiel #10
0
        ConnectionHandler <RabbitMqConnection> GetConnection(IRabbitMqEndpointAddress address)
        {
            return(_connectionCache.Retrieve(address.Uri, () =>
            {
                ConnectionFactoryBuilder builder = _connectionFactoryBuilders.Retrieve(address.Uri, () =>
                {
                    var configurator = new ConnectionFactoryConfiguratorImpl(address);

                    return configurator.CreateBuilder();
                });

                ConnectionFactory connectionFactory = builder.Build();

                var connection = new RabbitMqConnection(connectionFactory);
                var connectionHandler = new ConnectionHandlerImpl <RabbitMqConnection>(connection);
                return connectionHandler;
            }));
        }
        ConnectionHandler <RabbitMqConnection> GetConnection(
            Cache <ConnectionFactory, ConnectionHandler <RabbitMqConnection> > cache, IRabbitMqEndpointAddress address)
        {
            ConnectionFactory factory = SanitizeConnectionFactory(address);

            return(cache.Get(factory, _ =>
            {
                if (_log.IsDebugEnabled)
                {
                    _log.DebugFormat("Creating RabbitMQ connection: {0}", address.Uri);
                }

                ConnectionFactoryBuilder builder = _connectionFactoryBuilders.Get(factory, __ =>
                {
                    if (_log.IsDebugEnabled)
                    {
                        _log.DebugFormat("Using default configurator for connection: {0}", address.Uri);
                    }

                    var configurator = new ConnectionFactoryConfiguratorImpl(address);

                    return configurator.CreateBuilder();
                });

                ConnectionFactory connectionFactory = builder.Build();

                if (_log.IsDebugEnabled)
                {
                    _log.DebugFormat("RabbitMQ connection created: {0}:{1}/{2}", connectionFactory.HostName,
                                     connectionFactory.Port, connectionFactory.VirtualHost);
                }

                var connection = new RabbitMqConnection(connectionFactory);
                var connectionHandler = new ConnectionHandlerImpl <RabbitMqConnection>(connection);
                return connectionHandler;
            }));
        }
 public ConnectionFactoryBuilder Configure(ConnectionFactoryBuilder builder)
 {
     builder.Add(Configure);
     return(builder);
 }
 public ConnectionFactoryBuilder Configure(ConnectionFactoryBuilder builder)
 {
     builder.Add(Configure);
     return builder;
 }
Beispiel #14
0
 static Program()
 {
     factory = ConnectionFactoryBuilder.NewBuilder(MySql.Data.MySqlClient.MySqlClientFactory.Instance,
                                                   "Server=127.0.0.1;Uid=root;Pwd=asdf;Database=sample;", null,
                                                   new MySQLDialect()).Build();
 }
		public void AddConnectionFactoryBuilder(Uri uri, ConnectionFactoryBuilder connectionFactoryBuilder)
		{
			_connectionFactoryBuilders[uri] = connectionFactoryBuilder;
		}
 public void AddConnectionFactoryBuilder(Uri uri, ConnectionFactoryBuilder connectionFactoryBuilder)
 {
     _connectionFactoryBuilders[uri] = connectionFactoryBuilder;
 }