目前我有一个使用ZeroMQ交换协议缓冲区有效负载的解决方案。 序列化的协议缓冲区方法必须保持不变,但我可以用更方便的选项替换ZMQ。 我对ZMQ不满意的事情是:
它在Java方面使用JNI,在复杂的多线程场景中我被JNI咬过。我尽力消除它。
我不需要排队,我只需要rpc。
我的要求(主要由ZeroMQ涵盖)是:
支持32/64位* nix,Windows,MacOS。
主要支持Java,C ++和C#,Python,Ruby等也不错。
语言支持必须由语言中的本机实现提供,而不是通过包装本机代码。
高绩效。
非病毒许可证,无GPL,AGPL等。
如果用于消息传递的Java实现不使用JNI,我一直在考虑使用Thrift作为TCP上的传输层(我猜它支持它)和协议缓冲区有效负载。
除了ZMQ之外,您还可以考虑哪些选项进行此设置?
答案 0 :(得分:11)
你应该看看Netty。它是一个高性能的Java NIO服务器框架,内置支持Protocol Buffer,它是根据Apache License的条款发布的。框架很好documented,有些examples显示了如何使用Protocol Buffers原型协议。
答案 1 :(得分:8)
答案 2 :(得分:0)
最初的问题是在JeroMQ被放到github上一年之后被问到的。它是ZeroMQ的纯java实现。在整个过程中,它一直在不断发展,似乎{C}实施comparable in speed。