Tuesday 26 May 2009

RabbitMQ client version 1.5.3, licensing and Message Enumerators

Been busy the last week or so on the System.Messaging/AMQP integration on Mono, I updated the RabbitMQ client library to version 1.5.3, only to have them release a new version of the library (1.5.5) literally the day after. Mirco Bauer, who handles the packaging for Debian, ran into a bit of a problem with the way we included the RabbitMQ library. Unfortunately the AMQP spec files are not considered Free under the terms of the DFSG, which is not much of a problem as we do not use them during the build. However, the .cs files that are generated from the specs contained comments that were extracted verbatim from said specs, which make the .cs files non-free too. Anyway, to cut a long story short, I've patched the RabbitMQ code generator and pushed the patch back upstream so that we can generate the .cs files without comments and I'm in the process of fixing the generated files in Mono's trunk and 2.4 branch.

As far as actual new functionality goes, I've updated the MessageEnumerator support, so that MoveNext(TimeSpan timeout) and RemoveCurrent(TimeSpan timeout) are both supported. I've also added calls for all of the other methods through to Mono.Messaging provider layer, unfortunately the way transactions work in AMQP make it impossible use the transactional methods of MessageEnumerator (personally I blame the System.Messaging API design, but that's a rant for a different blog post). If you need transactions, then you stick to the methods in MessageQueue, which are supported.

P.S. Hello Monologue, thanks to Miguel for kindly adding me to the group of Mono bloggers.

No comments: