2010-02-14 16 views
9

Piszemy kod w C++, który wymaga przesyłania wiadomości. Czy dostępny jest wolny/open-source i stabilny serwer AMQP, który ma równie stabilną bibliotekę klienta C++. Musimy również udostępnić użytkownikom interfejs Pythona naszego kodu (chodzi o to, aby zrobić maksimum rzeczy w C++ i odsłonić API w Pythonie).Implementacja AMQP C++

Co może być najlepszym sposobem osiągnięcia tego.

+0

Cześć, przepraszam za tak powolny, odpowiadając na to. Właśnie to znaleźliśmy. Istnieje zainteresowanie wzięciem klienta RabbitMQ C i udostępnienie mu interfejsu w C++, który następuje po idiomach C++. Zostało to omówione na liście dyskusyjnej RabbitMQ, którą polecam, jeśli masz pytania. Zaproponowano projekt interfejsu. Ale dlaczego nie skorzystać z klienta C? Proszę się z nami skontaktować i daj nam znać. Możesz wysłać wiadomość e-mail na adres [email protected] lub wysłać posta do rabbitmq-discuss. Pozdrawiam alexis – alexis

Odpowiedz

1

AMQP może być dość skomplikowany do zrozumienia - Sugeruję użycie Protocol Buffers do kodowania warstwy komunikacyjnej, generuje zarówno python, jak i C++. jeśli twoje potrzeby są zbyt skomplikowane, sugerowałbym ICE, ponieważ wspiera każdy język programowania, który myślę, i uważam, że obsługuje również format buforów protokołów.

- edycja -

Jeśli masz zamiar użyć AMQP, należy spojrzeć na Zero MQ. Ma implementację AMQP w C++. Jednak przenoszą je do implementacji czystego C.

+0

Dzięki Hassan, nad którym pracuję już wykorzystuję AMQP z Java Client API (Rabbit MQ), więc chcielibyśmy nadal używać AMQP jako middleware, jednak nie jestem w stanie znaleźć dobrego klienta C++ implementacja dla dowolnego otwartego źródła AMQP. –

+0

Czy istnieje element kolejki transakcyjnej do buforów protokołu? Myślałem, że to czysto mechanizm serializacji? –

+0

Nie ma kolejki transakcyjnej. –

2

Apache QPid wydaje się mieć znaczenie tutaj. Istnieje biblioteka brokera/klienta C++ here.

Należy pamiętać, że ponieważ programujesz do protokołu (AMQP), Twój broker/klient nie musi być w tym samym języku. na przykład Używam klientów Scala i C# rozmawiających z RabbitMQ (broker Erlang).

+0

Dzięki Brian, mam to, więc poprawiam moje pytanie, czy istnieje broker AMQP, który ma dobrą, stabilną obsługę biblioteki klienta C++. –

+0

Nie mogę wypowiedzieć się na temat stabilności QPid, obawiam się. Byłbym bardziej zaniepokojony stabilnością brokerów, ponieważ to musi działać niezależnie i zarządzać niezawodnym kolejkowaniem/dostarczaniem itp. RabbitMQ wydaje się działać dobrze. Podejrzewam, że należy uruchomić QPid/RabbitMQ w danym scenariuszu i sprawdzić, jak się on opłaca. –

8

Na przyszłość, zobacz Apache Qpid - ma bibliotekę klienta C++ i jest bardzo dobra. Problem z twoim przypadkiem użycia polega na tym, że Rabbit implementuje AMQP 0-8, a klient Qpid C++ mówi AMQP 0-10.

0

Wiem, że jest trochę za późno, jestem trochę w tej samej pozycji, co pytający.

Patrzę na IceStorm i Apache QPid na powyższe odpowiedzi.

Obecnie mam królika MQ, ale nie jest łatwo zintegrować się z C++.

Myślę, że jeśli masz kontrolę zarówno nad kodem klienta, jak i kodem serwera, i nie potrzebujesz AMQP "standard", a IceStorm robi to, czego potrzebujesz, i jesteś cool z licencją GPL (lub gotową do zakupu licencji od zera) IceStorm wydaje się być najbardziej stabilnym i wielokierunkowym rozwiązaniem.