2010-02-14 112 views
9

我们正在编写需要消息传递的C++代码。是否有免费/开放源代码和稳定的AMQP服务器可用,它具有同样稳定的C++客户端库。我们还需要向用户提供我们代码的Python接口(想法是在C++中做最多的东西,并在Python中公开API)。AMQP C++实现

什么是最好的方式来实现这一点。

+0

你好,很抱歉说得这么慢回覆此。我们刚刚找到它。 有兴趣参加RabbitMQ C客户端并在C++中使用C++语言提供接口。这已在RabbitMQ邮件列表上讨论过,如果您有任何问题,我建议您这样做。提出了一个界面草案。 但是,为什么不使用C客户端呢?请联系我们并告诉我们。你可以发邮件到[email protected]或发布到rabbitmq-discuss。 干杯 亚历克西斯 – alexis 2010-03-15 09:02:06

回答

1

AMQP可以说是相当复杂的理解 - 我建议使用Protocol Buffers编写你的通信层,它产生Python和C++。如果您的需求太复杂,我建议您使用ICE,因为它支持您可以想到的所有编程语言,我相信它也可以处理协议缓冲区格式。

- 编辑 -

如果你要使用AMQP,你应该看看Zero MQ。它有一个AMQP的C++实现。但是他们将它移植到纯C实现中。

+0

感谢哈桑,那我已经工作的项目使用AMQP与Java客户端API(兔MQ),所以我们想继续使用AMQP作为中间件,但是我没能找到一个很好的C++客户端实施任何开源AMQP。 – 2010-02-14 14:39:26

+0

是否有协议缓冲区的事务队列元素?我认为这纯粹是一种序列化机制? – 2010-02-14 14:42:37

+0

它没有事务队列。 – 2010-02-14 14:43:58

2

Apache QPid似乎是与此有关。有一个C++经纪人/客户端库here

请注意,由于您正在编程为协议(AMQP),您的经纪商/客户不需要使用相同的语言。例如我正在使用Scala和C#客户端与RabbitMQ(一个Erlang经纪商)交谈。

+0

感谢Brian,我明白了,所以我纠正了我的问题,是否有AMQP代理具有良好的稳定C++客户端库支持。 – 2010-02-14 14:50:54

+0

我不能评论QPid的稳定性,恐怕。我会更关心经纪商的稳定性,因为它必须独立运作,并管理可靠的排队/交付等.RabbitMQ似乎运作良好。我怀疑要做的事情是在您的特定场景中运行QPid/RabbitMQ并查看它的价格。 – 2010-02-14 14:55:41

8

以供将来参考,看看Apache Qpid - 它有一个C++客户端库,是非常不错的。你的使用案例的问题是Rabbit实现了AMQP 0-8,而Qpid C++客户端会谈到AMQP 0-10。

0

我知道这有点晚了,我和提问者处于同一位置。

我看IceStorm每以上答案阿帕奇QPid。

目前我有兔子MQ,但它不是很容易与C++集成。

我认为,如果你能控制客户端和服务器代码,并且你不需要AMQP“标准”,IceStorm可以满足你的需求,而且你可以使用GPL许可证(或准备购买许可证从零开始)。IceStorm似乎是那里最稳定和跨语言的解决方案。