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