/// <summary> /// Helper event handler. /// </summary> private void ResponseReady(object sender, BasicDeliverEventArgs e) { try { // Check if correlation Id is valid. if (correlationIds.Contains(e.BasicProperties.CorrelationId)) { lock (correlationIds) { correlationIds.Remove(e.BasicProperties.CorrelationId); } // Converting from Json bytes. var convertedMessage = MessageQueueCommonItems.DeserializeFromJsonBytes <TResponse>(e.Body); // Calling handler. OnResponseReady?.Invoke(convertedMessage); } } catch (QueueException queueException) { #region Logging - Error logger.Fatal(queueException, queueException.Message); #endregion } catch (Exception ex) { #region Adding Context Data var context = new Dictionary <string, string>(); if (!string.IsNullOrEmpty(rabbitMqConfiguration.ExchangeName)) { context.Add(CommonContextKeys.ExchangeName, rabbitMqConfiguration.ExchangeName); } if (!string.IsNullOrEmpty(routingKey)) { context.Add(CommonContextKeys.RoutingKey, routingKey); } if (!string.IsNullOrEmpty(replyQueueName)) { context.Add(CommonContextKeys.ReplyQueueName, replyQueueName); } #endregion MessageQueueCommonItems.PrepareAndLogQueueException( errorCode: QueueErrorCode.FailedToReceiveResponseMessage, message: ErrorMessages.FailedToReceiveResponseMessage, innerException: ex, queueContext: CommonItems.RabbitMqName, queueName: rabbitMqConfiguration.QueueName, address: rabbitMqConfiguration.Address, context: context, logger: logger); } }
/// <summary> /// Helper event handler. /// </summary> private void ReceiveReady(object sender, BasicDeliverEventArgs request) { try { // Converting from Json bytes. var convertedMessage = MessageQueueCommonItems.DeserializeFromJsonBytes <TRequest>(request.Body); // Getting other required fields for response. var replyProperties = model.CreateBasicProperties(); replyProperties.CorrelationId = request.BasicProperties.CorrelationId; // Calling handler. OnRequestReady?.Invoke(new RmqRequestMessage <TRequest, TResponse>( model, replyProperties, rabbitMqConfiguration.ExchangeName ?? string.Empty, request.BasicProperties.ReplyTo, rabbitMqConfiguration.Acknowledgment, request.DeliveryTag, convertedMessage, ref logger)); } catch (QueueException queueException) { #region Logging - Error logger.Fatal(queueException, queueException.Message); #endregion } catch (Exception ex) { #region Adding Context Data var context = new Dictionary <string, string>(); if (!string.IsNullOrEmpty(rabbitMqConfiguration.ExchangeName)) { context.Add(CommonContextKeys.ExchangeName, rabbitMqConfiguration.ExchangeName); } if (!string.IsNullOrEmpty(rabbitMqConfiguration.RoutingKey)) { context.Add(CommonContextKeys.RoutingKey, rabbitMqConfiguration.RoutingKey); } #endregion MessageQueueCommonItems.PrepareAndLogQueueException( errorCode: QueueErrorCode.FailedToReceiveRequestMessage, message: ErrorMessages.FailedToReceiveRequestMessage, innerException: ex, queueContext: CommonItems.RabbitMqName, queueName: rabbitMqConfiguration.QueueName, address: rabbitMqConfiguration.Address, context: context, logger: logger); } }
/// <summary> /// Helper event handler. /// </summary> private async void ReceiveReady(object sender, BasicDeliverEventArgs e) { try { // Converting from Json bytes. var convertedMessage = MessageQueueCommonItems.DeserializeFromJsonBytes <TMessage>(e.Body); var messageReceiveOptions = new RmqMessageReceiveOptions(model, e.DeliveryTag, rabbitMqConfiguration.QueueName, rabbitMqConfiguration.Acknowledgment, ref logger); // Calling handler (async is preferred over sync). if (OnMessageReadyAsync != null) { await OnMessageReadyAsync.Invoke(convertedMessage, messageReceiveOptions); } else { OnMessageReady?.Invoke(convertedMessage, messageReceiveOptions); } } catch (QueueException queueException) { #region Logging - Error logger.Fatal(queueException, queueException.Message); #endregion } catch (Exception ex) { #region Adding Context Data var context = new Dictionary <string, string>(); if (!string.IsNullOrEmpty(rabbitMqConfiguration.ExchangeName)) { context.Add(CommonContextKeys.ExchangeName, rabbitMqConfiguration.ExchangeName); } if (!string.IsNullOrEmpty(rabbitMqConfiguration.RoutingKey)) { context.Add(CommonContextKeys.RoutingKey, rabbitMqConfiguration.RoutingKey); } #endregion MessageQueueCommonItems.PrepareAndLogQueueException( errorCode: QueueErrorCode.FailedToReceiveMessage, message: ErrorMessages.FailedToReceiveMessage, innerException: ex, queueContext: CommonItems.RabbitMqName, queueName: rabbitMqConfiguration.QueueName, address: rabbitMqConfiguration.Address, context: context, logger: logger); } }