2010-02-14 20 views
9

Estamos escribiendo el código C++ que necesita mensajes. ¿Hay un servidor AMQP estable/de código libre disponible que tenga una biblioteca cliente C++ igualmente estable con él? También debemos proporcionar la interfaz Python de nuestro código a los usuarios (la idea es hacer el máximo de cosas en C++ y exponer la API en Python).Implementación AMQP C++

¿Cuál es la mejor manera de lograrlo?

+0

Hola, siento ser tan lento respondiendo a este. Lo acabamos de encontrar. Existe interés en tomar el cliente RabbitMQ C y proporcionarle una interfaz en C++ que sigue los modismos C++. Esto se ha discutido en la lista de correo de RabbitMQ, que recomiendo si tiene alguna pregunta. Se ha propuesto una interfaz borrador. Pero, ¿por qué no usar el cliente C? Por favor, póngase en contacto y háganos saber. Puede enviar un correo electrónico a [email protected] o publicarlo en rabbitmq-discuss. Saludos Alexis – alexis

Respuesta

1

AMQP puede ser bastante complejo de entender: sugiero usar Protocol Buffers para codificar su capa de comunicación, genera Python y C++. si sus necesidades son demasiado complicadas, sugeriría ICE ya que admite todos los lenguajes de programación que pueda imaginar, y creo que también maneja el formato de búferes de protocolo.

- editar -

Si se va a utilizar AMQP, usted debe buscar en Zero MQ. Tiene una implementación en C++ de AMQP. Sin embargo, lo están transfiriendo a una implementación de C puro.

+0

Gracias Hassan, el proyecto que estoy trabajando en ya utiliza AMQP con Java API de cliente (Conejo MQ) lo que nos gustaría continuar con el uso AMQP como middleware, sin embargo yo no soy capaz de encontrar un buen C++ cliente implementación para cualquier AMQP de fuente abierta. –

+0

¿Hay un elemento de cola transaccional para los búferes de protocolo? Pensé que era puramente un mecanismo de serialización? –

+0

No tiene una cola transaccional. –

2

Apache QPid parece ser relevante aquí. Hay una biblioteca de agentes/corredores de C++ here.

Tenga en cuenta que, dado que está programando para un protocolo (AMQP), , su intermediario/cliente no tiene que estar en el mismo idioma. p.ej. Estoy usando clientes de Scala y C# que hablan con RabbitMQ (un intermediario de Erlang).

+0

Gracias Brian, lo tengo, así que corrijo mi pregunta, ¿hay un broker de AMQP que tenga una buena compatibilidad con la biblioteca cliente C++? –

+0

No puedo comentar sobre la estabilidad de QPid, me temo. Me preocuparía más la estabilidad del broker, ya que tiene que ejecutarse de forma independiente y gestionar colas/entregas confiables, etc. RabbitMQ parece funcionar bien. Sospecho que lo que hay que hacer es ejecutar QPid/RabbitMQ en su escenario particular y ver cómo le va. –

8

Para referencia futura, eche un vistazo a Apache Qpid - tiene una biblioteca cliente C++ y es muy buena. El problema para su caso de uso es que Rabbit implementa AMQP 0-8 y el cliente Qpid C++ habla AMQP 0-10.

0

Sé que esto es un poco tarde, estoy como en la misma posición que el asker.

Estoy buscando en IceStorm y Apache QPid por cada respuesta anterior.

Actualmente tengo conejito MQ pero no es tan fácil de integrar con C++.

Creo que si tiene control sobre el código del cliente y del servidor, y no necesita AMQP "el estándar" e IceStorm hace lo que necesita, y está satisfecho con la licencia GPL (o listo para comprar una licencia de zeroC) .. IceStorm parece ser la solución más estable y de más de un idioma.