Is there any free library that implements message queuing similar to MSMQ (Microsoft Message Queuing)?
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://ww开发者_StackOverflow中文版w.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.
There is Rhino Queues. The author is considered to be a pretty good developer.
How about NServiceBus using the shared memory transport? The creator, Udi Dahan, is a well respected individual in the message based architecture space.
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.
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).
See also this system:
http://www.codeproject.com/Articles/193611/DotNetMQ-A-Complete-Message-Queue-System-for-NET
DotNetMQ is an open source Message Broker that has several features:
Persistent or non-persistent messaging. Guaranteed delivery of persistent messages even in a system crash. Automatic and manual routing of messages in a custom machine graph. Supports multiple databases (MS SQL Server, MySQL, SQLite, and memory-based storage for now). Supports don’t store, direct send style messaging. Supports Request/Reply style messaging. Easy to use client library to communicate with the DotNetMQ Message Broker. Built-in framework to easily construct RMI services upon message queues. Supports delivering messages to ASP.NET Web Services. GUI-based management and monitoring tool. Easy to install, manage, and use.
You might want to look at Retlang http://code.google.com/p/retlang/
精彩评论