These two articles might help.

1. Look for this one on C# Corner
MSMQ, your reliable asynchronous message processing
By  klaus_salchner  July 20, 2004
http://www.c-sharpcorner.com/


2. This one is VB .NET but I think it does exactly what you want.

MSMQ for .NET Developers
http://www.devx.com/dotnet/Article/27560/0/page/3

-----Original Message-----
From: Discussion of advanced .NET topics.
[mailto:[EMAIL PROTECTED] On Behalf Of Paul Cowan
Sent: Saturday, August 05, 2006 4:24 PM
To: [email protected]
Subject: Re: [ADVANCED-DOTNET] ReceiveByCorrelationId + MSMQ


Hi,

THe eventargs contains the message.  I have the following event handler for
PeekCompleted:

private void ReceiveQ_PeekCompleted(object sender, PeekCompletedEventArgs e)
{
    if (e.Message.CorrelationId != _correlationId)
    {
         messageQueue.BeginPeek(_timeOut);
         return;
    }
    MessageQueue messageQueue = sender as MessageQueue;
    Message message = messageQueue.EndPeek(e.AsyncResult);
}

My question is what if there is an error on the other side and the message
never gets placed onto the queue??  How can I timeout gracefully if
BeginPeek is being called each time?

Thanks
Paul
[EMAIL PROTECTED]



> Date: Sat, 5 Aug 2006 14:16:28 -0500> From: [EMAIL PROTECTED]> Subject:
Re: [ADVANCED-DOTNET] ReceiveByCorrelationId + MSMQ> To:
[email protected]> > I think you can just do a BeginPeek
and check the correlationId against the> message you receive from the
EndPeek. If it is [one of your outstanding]> message[s], then
receiveByCorrelationId. If not, then ignore and BeginPeek> again. Sorry, I
haven't worked with MSMQ in over a year, so the details are> a bit rusty,
but I think that should work for you.> > On 8/5/06, Paul Cowan
<[EMAIL PROTECTED]> wrote:> >> > Hi,> >> > We are creating a web
application that unfortunately has to communicate> > with a product called
Navision.  The communication is to send and receive> > xml documents via
MSMQ.> > The process is we send a message to one queue and receive messages
on> > another queue.  The only reliable way I have been able to marry these>
> messages together is to by setting the CorrelationId of the response
message> > to be the id of the request message.So far I am doing this
synchronously> > using the ReceiveByCorrelationId method.  I have grave
worries of how this> > will scale and I don't think it is thread safe.> >> >
My code is as follows:> >> > while (receiveQ.PeekByCorrelationId(messageId,
_timeOut) != null)> > {> >    message =
receiveQ.ReceiveByCorrelationId(messageId, _timeOut);> > }> >> > I would
like to do this asynchronously but  am really not sure how to go> > about
this.> >> > Can anyone with MSMQ experience tell me how I can accomplish
this problem> > asynchronously??> > Thanks> > Paul> >> >> >
===================================> > This list is hosted by
DevelopMentor(r)  http://www.develop.com> >> > View archives and manage your
subscription(s) at> > http://discuss.develop.com> >> >
===================================> This list is hosted by DevelopMentor(r)
http://www.develop.com> > View archives and manage your subscription(s) at
http://discuss.develop.com
===================================
This list is hosted by DevelopMentor(r)  http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com

===================================
This list is hosted by DevelopMentorĀ®  http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com

Reply via email to