Skip to content

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

@KamranShahid

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions