I'm seeking advice from people using RabbitMQ to connect services written in different languages. Currently my organization is using RabbitMQ exclusively with C# and it's all working quite well. In order to provide some nice additional functionality over and above what RabbitMQ provides, we've implemented MassTransit. MassTransit provides some great benefits over RabbitMQ (abstracts away RabbitMQ specifics, handles "poison" messages, retries, serialization, provides lots of messaging patterns, etc.). However, the major downside is that it locks you into using .NET; it handles deserialization into .NET classes ONLY. This limits our ability to create services written in non-.NET languages. Of course we could surface RESTful endpoints written in C# to allow other services to connect, but that's not ideal as other services should be able to engage in pub/sub and other messaging not suitable over REST.
So here's the question: if you're currently using RabbitMQ, how are you connecting up services written in different languages? Do you have to implement some shared code for each language you want to support in order to handle serialization/deserialization?
Thank you for your time in reviewing this and sharing your advice.