views:

420

answers:

5

I am interested in using a free library that has features similar to MSMQ to send/receive messages among 3 app domains in a win form application. I only need the private queue functionality (No public queues or AD support) Please provide links and some advantages/disadvantages . I am happy to open sub questions if you think you need more points for finer details.

Note: Unfortunately I have some users that do not have Windows XP professional edition (MSMQ is not available) I saw Apache ActiveMQ and rabbit MQ but it seems a bit overkill for what I need to do. http://activemq.apache.org/ http://www.rabbitmq.com/ It is possible to implement this feature using a singleton Queue protected by a named mutex, but I would not like to spend the time if somebody has already done it.

+2  A: 

There is Rhino Queues. The author is considered to be a pretty good developer.

BrianLy
I will check his code and let you know
mas_oz2k1
A: 

If it's all in the same application then sharing a synchronized queue is what you want, have a look at the Queue.Synchronized method in MSDN, that provides you with a thread-safe queue.

Timothy Walters
It is thread-safe but it is not cross app domain safe
mas_oz2k1
A: 

You might want to look at Retlang http://code.google.com/p/retlang/

Tom Frey
What part of retlang is most relevant to this question? Some explanation, or links to specific code would be helpful.
BrianLy
Well, Retlang is essentially an intra-application multi-threaded messaging library, with direct support for dedicated UI threads (FormFiber). I don't think there is too much documentation around though besides their code samples on http://code.google.com/p/retlang/source/browse/trunk/src/#srcThe author also has a blog: http://www.jroller.com/mrettig/
Tom Frey
I will check, but from first glance it is only one process, one app domain multi-threaded messaging library and I need cross- app domain support.
mas_oz2k1
I don't see how Retlang is really comparable to a queuing library, or relevant to this question.
BrianLy
+1  A: 

How about NServiceBus using the shared memory transport? The creator, Udi Dahan, is a well respected individual in the message based architecture space.

jancow
I will check it and let you know
mas_oz2k1
A: 

At some point, there is going to have to be some client specific code to accept messages. If the users need to accept messages on their machines, it sounds like a smart client situation. In the Windows world, there is a smart client which does messaging, and allows users to work with data in a disconnected way.

I can't imagine any one library which will allow messaging on different operating systems. Even if a singleton is used, there has to be some cross-platform way to send/receive the messages. It seems like the client end would always have to be OS specific.

It might be possible to try Mono on the non-windows side. There is a tool you can use to see if a third party library has dependencies which will not run in Mono. It was released with the Mono tools for Visual Studio. It is called the Mono Migration Analyzer (MoMA).

cspritch76