I spend some time trying out Rhino-Queues (RQ) and Rhino-ServiceBus. I'm convinced of the potential of these projects, that I'll add both to my stack of tools for my next projects. It’s so easy to embed Rhino-Queues in your own application without the need to install additional components on the machine. So you have a queuing system out-of-the-box.
At the moment I’m working with Windows CE Devices. I want to implement some features, which could be easily added with a queuing infrastructure at hand. So the next step would be to let our devices talk to the servers through a queue. Preferably to a Rhino-Queue instance ;)
A first look into the source of Rhino-Queues revealed, that there a some dependencies on components , that are not available in the Compact Framework.
Rhino-Queues uses ESENT to reliable store messages. Transactions are managed through System.Transactions. ESENT and System.Transactions are not available in the CF!
My first thought was to just exchange the storage backend, but it is not easily exchangeable and does not expose a common interface.
After a little spike of RQ as a Smart Device Project targeting Windows CE 5.0 and the CF 3.5 I saw some other pitfalls. Especially around the System.Threading namespace.
My plan for the near future is to make a Rhino-Queues compatible client for the Compact Framework. The storage backend will probably be a Sqlite database.