Example #1
0
        void ConfigureConnectionInfrastructure(RabbitMqConnectionOptionsContainer optionsContainer)
        {
            Connection = _rabbitMqConnectionFactory.CreateRabbitMqConnection(optionsContainer?.Options?.ProducerOptions);
            if (Connection != null)
            {
                Connection.CallbackException += HandleConnectionCallbackException;
                if (Connection is IAutorecoveringConnection connection)
                {
                    connection.ConnectionRecoveryError += HandleConnectionRecoveryError;
                }
                Channel = Connection.CreateModel();
                Channel.CallbackException += HandleChannelCallbackException;
                Channel.BasicRecoverOk    += HandleChannelBasicRecoverOk;
            }

            ConsumingConnection = _rabbitMqConnectionFactory.CreateRabbitMqConnection(optionsContainer?.Options?.ConsumerOptions);
            if (ConsumingConnection != null)
            {
                ConsumingConnection.CallbackException += HandleConnectionCallbackException;
                if (Connection is IAutorecoveringConnection connection)
                {
                    connection.ConnectionRecoveryError += HandleConnectionRecoveryError;
                }
                ConsumingChannel = ConsumingConnection.CreateModel();
                ConsumingChannel.CallbackException += HandleChannelCallbackException;
                ConsumingChannel.BasicRecoverOk    += HandleChannelBasicRecoverOk;

                _consumer = _rabbitMqConnectionFactory.CreateConsumer(ConsumingChannel);
            }
        }
Example #2
0
        public void Dispose()
        {
            if (Connection != null)
            {
                Connection.CallbackException -= HandleConnectionCallbackException;
                if (Connection is IAutorecoveringConnection connection)
                {
                    connection.ConnectionRecoveryError -= HandleConnectionRecoveryError;
                }
            }

            if (ConsumingConnection != null)
            {
                ConsumingConnection.CallbackException -= HandleConnectionCallbackException;
                if (Connection is IAutorecoveringConnection connection)
                {
                    connection.ConnectionRecoveryError -= HandleConnectionRecoveryError;
                }
            }

            if (Channel != null)
            {
                Channel.CallbackException -= HandleChannelCallbackException;
                Channel.BasicRecoverOk    -= HandleChannelBasicRecoverOk;
            }

            if (ConsumingChannel != null)
            {
                ConsumingChannel.CallbackException -= HandleChannelCallbackException;
                ConsumingChannel.BasicRecoverOk    -= HandleChannelBasicRecoverOk;
            }

            if (Channel?.IsOpen == true)
            {
                Channel.Close((int)HttpStatusCode.OK, "Channel closed");
            }

            if (ConsumingChannel?.IsOpen == true)
            {
                ConsumingChannel.Close((int)HttpStatusCode.OK, "Channel closed");
            }

            if (Connection?.IsOpen == true)
            {
                Connection.Close();
            }

            if (ConsumingConnection?.IsOpen == true)
            {
                ConsumingConnection.Close();
            }

            Channel?.Dispose();
            Connection?.Dispose();
            ConsumingChannel?.Dispose();
            ConsumingConnection?.Dispose();
        }
Example #3
0
        void ConfigureConnectionInfrastructure(RabbitMqConnectionOptionsContainer optionsContainer)
        {
            Connection = RabbitMqFactoryExtensions.CreateRabbitMqConnection(optionsContainer?.Options?.ProducerOptions);
            if (Connection != null)
            {
                Connection.CallbackException       += HandleConnectionCallbackException;
                Connection.ConnectionRecoveryError += HandleConnectionRecoveryError;
                Channel = Connection.CreateModel();
                Channel.CallbackException += HandleChannelCallbackException;
                Channel.BasicRecoverOk    += HandleChannelBasicRecoverOk;
            }

            ConsumingConnection = RabbitMqFactoryExtensions.CreateRabbitMqConnection(optionsContainer?.Options?.ConsumerOptions);
            if (ConsumingConnection != null)
            {
                ConsumingConnection.CallbackException       += HandleConnectionCallbackException;
                ConsumingConnection.ConnectionRecoveryError += HandleConnectionRecoveryError;
                ConsumingChannel = ConsumingConnection.CreateModel();
                ConsumingChannel.CallbackException += HandleChannelCallbackException;
                ConsumingChannel.BasicRecoverOk    += HandleChannelBasicRecoverOk;

                _consumer = new AsyncEventingBasicConsumer(ConsumingChannel);
            }
        }