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); } }
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(); }
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); } }