Note that there are some explanatory texts on larger screens.

plurals
  1. POMSMQ ReceiveByCorrelationID
    text
    copied!<p>We have a core system which communicates with its clients and other internal systems async through MSMQ. This is a good fit since clients are mobile phones sending sms’es and other systems has MQ adapters. Also these communication processes are asynchronous by default. </p> <p>Now we have a requirement to support other systems which require a synchronous communication style be default. A typical example of this would be a handheld device, which supports rpc style request/response communication over HTTP.</p> <p>There has been an solutions proposal to support this by adding a HTTP “proxy”/endpoint that pushes messages received from these clients on to inbound queue with a correlationId and then looks in outbound queue for a message with the same correlationId. Hopefully the processing of the message is done and the message with the expected correlationId will be present in the outbound queue. This would happen on the same thread as pushed the message in to the core system to mimic request response.</p> <p>However we see that receiving messages by correlationId (MessageQueue.ReceiveByCorrelationId) is a performance killer. It does not take many client threads to really slow the system down. </p> <p>I guess the problem is the proposed design with mimicking sync request-response using receive by correlationid approach is the issue here. In current architecture the outbound queue resides on a remote host, been reading up on this to see if that is the issue or not. </p> <p>Does anyone have any other approaches for solving this? I guess the logical ting would be to stuff messages from outbound queue to a database or something from a single receiving process and then search that for messages that has the corresponding correlationId</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload