Beispiel #1
0
        /// <summary>
        /// Helper event handler.
        /// </summary>
        private void ResponseReady(object sender, NetMQSocketEventArgs e)
        {
            try
            {
                // Receiving message.
                // Server will send empty frame followed by actual data frame so we need to skip the first frame.
                var receivedMessage = e.Socket.ReceiveMultipartStrings();

                if (receivedMessage.Count > 1)
                {
                    // Converting from Json.
                    var convertedMessage = MessageQueueCommonItems.DeserializeFromJson <TResponse>(receivedMessage[1]);

                    // Calling handler.
                    OnResponseReady?.Invoke(convertedMessage);
                }
            }
            catch (QueueException queueException)
            {
                #region Logging - Error
                logger.Fatal(queueException, queueException.Message);
                #endregion
            }
            catch (Exception ex)
            {
                MessageQueueCommonItems.PrepareAndLogQueueException(
                    errorCode: QueueErrorCode.FailedToReceiveResponseMessage,
                    message: ErrorMessages.FailedToReceiveResponseMessage,
                    innerException: ex,
                    queueContext: CommonItems.ZeroMqName,
                    address: zmqConfiguration.Address,
                    logger: logger);
            }
        }
Beispiel #2
0
        /// <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);
            }
        }