At the moment I have a solution that uses ZeroMQ to exchange protocol buffer payloads. The protocol buffer method of serialization is bound to stay as it is, but I can replace ZMQ with a more convenient option. The things I am not happy about in ZMQ are:
It uses JNI on the Java side,and I've been bitten before by JNI, in complex, multi thread scenarios. I try to eliminate it whenever I can.
I don't need queuing, I just need rpc.
My requirements (which are mostly covered by ZeroMQ) are:
Support for 32/64 bit *nix, Windows, MacOS.
Support for Java, C++ and C# primarily, and Python, Ruby etc. would be nice.
Language support must be provided by native implementations in the language, not via wrapping native code.
High performance.
Non Viral license, no GPL, AGPL etc.
I've been thinking about using Thrift as the transport layer over TCP (I guess it supports that) with protocol buffers payloads, if its Java implementation for messaging is not using JNI.
What options can you think of other than ZMQ for this setup?