Skip to content

In Majordomo Pattern , Implementation of New Async method for post processing after message received  #12

Description

@KamranShahid

In MDPBroker.cs of MajordomoPattern implementation i feel there is delay in responding to message after it recieved at broker.

So i am creating a async version of one method. Please comment if there is anything wrong in it as per pattern implementation

private void ProcessReceivedMessageAsync(object sender, NetMQSocketEventArgs e)
        {
            try
            {
                var msg = e.Socket.ReceiveMultipartMessage();
                Debug.WriteLine($"Received: {msg}");
                var senderFrame = msg.Pop();               // [e][protocol header][service or command][data]
                var empty = msg.Pop();                     // [protocol header][service or command][data]
                var headerFrame = msg.Pop();               // [service or command][data]
                var header = headerFrame.ConvertToString();

                switch (header)
                {
                    case MDPConstants.MDP_CLIENT_HEADER:
                        {
                            Task.Factory.StartNew(() => ProcessClientMessage(senderFrame, msg), TaskCreationOptions.LongRunning);
                        }
                        break;
                    case MDPConstants.MDP_WORKER_HEADER:
                        ProcessWorkerMessage(senderFrame, msg);
                        break;
                    default:
                        Debug.WriteLine("ERROR - message with invalid protocol header!");
                        break;
                }
            }
            catch (Exception ex)
            {

                Logger.Fatal(ex.Message, ex);
            }
        }

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions