2010-02-14 79 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似乎是那裏最穩定和跨語言的解決方案。