Ejemplo n.º 1
0
        /// <summary>
        /// Helper event handler.
        /// </summary>
        private void ReceiveReady(object sender, NetMQSocketEventArgs e)
        {
            try
            {
                // Receiving client message.
                var clientRequest = e.Socket.ReceiveMultipartMessage();

                // Parsing client message.
                var clientAddress     = clientRequest[0];
                var clientRequestData = MessageQueueCommonItems.DeserializeFromJson <TRequest>(clientRequest[2].ConvertToString());

                // Calling handler.
                OnRequestReady?.Invoke(new ZmqRequestMessage <TRequest, TResponse>(clientAddress, e.Socket, clientRequestData, ref logger));
            }
            catch (QueueException queueException)
            {
                #region Logging - Error
                logger.Fatal(queueException, queueException.Message);
                #endregion
            }
            catch (Exception ex)
            {
                MessageQueueCommonItems.PrepareAndLogQueueException(
                    errorCode: QueueErrorCode.FailedToReceiveRequestMessage,
                    message: ErrorMessages.FailedToReceiveRequestMessage,
                    innerException: ex,
                    queueContext: CommonItems.ZeroMqName,
                    address: zmqConfiguration.Address,
                    logger: logger);
            }
        }
Ejemplo n.º 2
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);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Helper event handler.
        /// </summary>
        private async Task ReceiveReadyAsync(BrokeredMessage brokeredMessage)
        {
            try
            {
                if (brokeredMessage != null)
                {
                    // Converting from Json.
                    var convertedMessage = MessageQueueCommonItems.DeserializeFromJson <TMessage>(new StreamReader(brokeredMessage.GetBody <Stream>()).ReadToEnd());
                    var lockToken        = Guid.Empty;

                    // Getting lock token if acknowledgment is configured.
                    if (sbConfiguration.Acknowledgment)
                    {
                        lockToken = brokeredMessage.LockToken;
                    }

                    var messageReceiveOptions = new SbMessageReceiveOptions(lockToken, sbConfiguration.QueueName, sbConfiguration.Acknowledgment, ref acknowledgmentQueueClient, 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)
            {
                MessageQueueCommonItems.PrepareAndLogQueueException(
                    errorCode: QueueErrorCode.FailedToReceiveMessage,
                    message: ErrorMessages.FailedToReceiveMessage,
                    innerException: ex,
                    queueContext: CommonItems.ServiceBusName,
                    queueName: sbConfiguration.QueueName,
                    address: sbConfiguration.Address,
                    logger: logger);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Helper event handler.
        /// </summary>
        private async void ReceiveReady(object sender, NetMQSocketEventArgs e)
        {
            try
            {
                string receivedMessage;

                // We need to lock as the sockets are not multi-threaded in ZeroMq.
                lock (lockForQueueOperation)
                {
                    // Receiving message.
                    receivedMessage = e.Socket.ReceiveFrameString();
                }

                // Converting from Json.
                var convertedMessage      = MessageQueueCommonItems.DeserializeFromJson <TMessage>(receivedMessage);
                var messageReceiveOptions = new ZmqMessageReceiveOptions(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)
            {
                MessageQueueCommonItems.PrepareAndLogQueueException(
                    errorCode: QueueErrorCode.FailedToReceiveMessage,
                    message: ErrorMessages.FailedToReceiveMessage,
                    innerException: ex,
                    queueContext: CommonItems.ZeroMqName,
                    address: zmqConfiguration.Address,
                    logger: logger);
            }
        }