具有请求 - 响应模式的双向消息传递(用于数据序列化的Protobuf)

时间:2014-12-04 11:15:09

标签: sockets rabbitmq protocol-buffers zeromq amqp

基本问题如下:

  • 两个节点通过单个套接字进行通信;
  • 请求回复模式;
  • 两个节点都是客户端和服务器,即节点A向节点B发出请求,节点B向节点A发出请求;

这可以通过两个插座轻松解决,但我只有一个。您可以将问题视为必须在单个套接字上创建多个虚拟套接字/通道您是否知道一个经过良好测试的消息库可以支持此类用例?


另外:

  • 支持C ++和Java;
  • 数据序列化由我使用Google Protocol Buffers处理;和
  • 如果可以使用RPC实现所有这些,那么很好,否则我将使用protobuf管理。

我不想写自己的图书馆并使用经过充分测试和良好支持的内容。我已经查看了ZeroMQ,但它似乎并不支持第三个要求(从A到B以及从B到A同时通过单个套接字的请求 - 应答模式)。 RabbitMQ是另一种可能性,但也可能不支持此要求。 (我没有这些图书馆的经验,所以也许我错了......)

(我想知道我是否要求太多。)

1 个答案:

答案 0 :(得分:1)

我没有为您提供完整的答案,但我注意到Cap'n Proto的RPC协议强调支持您所要求的内容:可以在任何方向。

这不完全是你想要的,因为:

  • Cap' n Proto有自己的序列化格式。使用模式受Protobufs的启发,但它不是protobufs。
  • Java实现尚不支持RPC(不过有计划)。
  • 如果你关心Windows:C ++实现还不支持MSVC上的RPC,主要是因为MSVC在C ++ 11支持上落后了。 :/

但它可能值得一试,如果没有其他的话可以获得灵感。

(披露:我是Cap' n Proto的作者,也是Google大多数开源Protobuf代码的作者。)