2010-02-14 5 views
9

우리는 메시징이 필요한 C++ 코드를 작성하고 있습니다. 동등하게 안정적인 C++ 클라이언트 라이브러리가있는 무료/오픈 소스 및 안정적인 AMQP 서버가 있습니까? 우리는 또한 우리의 코드에 대한 파이썬 인터페이스를 사용자에게 제공해야합니다 (아이디어는 C++에서 최대한의 것을하고 파이썬에서 API를 노출하는 것입니다).AMQP C++ 구현

이 작업을 수행하는 가장 좋은 방법은 무엇 일 수 있습니다.

+0

안녕하세요, 너무 느린 회신 할 죄송합니다. 방금 찾았습니다. RabbitMQ C 클라이언트를 사용하고 C++에서 C++ 관용구를 따르는 인터페이스를 제공하는 데 관심이 있습니다. 이것은 RabbitMQ 메일 링리스트에서 논의되었으며, 질문이 있으시면 추천 해드립니다. 초안 인터페이스가 제안되었습니다. 하지만 C 클라이언트를 사용하지 않는 이유는 무엇입니까? 연락을 취하여 알려주십시오. [email protected]으로 이메일을 보내거나 rabbitmq-discuss에 게시 할 수 있습니다. 건배 alexis – alexis

답변

1

AMQP는 이해하기가 매우 복잡 할 수 있습니다. Protocol Buffers을 사용하여 커뮤니케이션 레이어를 코딩하면 Python과 C++가 모두 생성됩니다. 귀하의 요구가 너무 복잡하다면 나는 당신이 생각할 수있는 모든 프로그래밍 언어를 지원하므로 ICE을 제안 할 것이고, 또한 프로토콜 버퍼 포맷을 처리한다고 생각합니다.

- 편집 - 당신이 AMQP를 사용하려는 경우, 당신은 Zero MQ

을 보일 것입니다. 그것은 AMQP의 C++ 구현을 가지고 있습니다. 그러나 그들은 그것을 순수한 C 구현으로 이식하고 있습니다.

+0

감사합니다. Hassan, 프로젝트에서 이미 AMQP를 Java 클라이언트 API (Rabbit MQ)와 함께 사용하고 있으므로 AMQP를 미들웨어로 계속 사용하고 싶지만 좋은 C++ 클라이언트를 찾을 수 없습니다. 모든 오픈 소스 AMQP에 대한 구현. –

+0

프로토콜 버퍼에 트랜잭션 큐 요소가 있습니까? 나는 순전히 직렬화 메커니즘이라고 생각했다. –

+0

트랜잭션 큐가 없습니다. –

2

Apache QPid이 여기에 적합합니다. C++ 브로커/클라이언트 라이브러리 here이 있습니다.

프로토콜 (AMQP)로 프로그래밍 중이므로 브로커/클라이언트가 동일한 언어 () 일 필요는 없습니다. 예 : Scala와 C# 클라이언트가 RabbitMQ (얼랭 브로커)와 대화 중입니다.

+0

감사합니다. Brian, 알겠습니다. 제 질문을 수정했습니다. 안정적인 C++ 클라이언트 라이브러리를 지원하는 AMQP 중개자가 있습니까? –

+0

QPid의 안정성에 대해서는 언급 할 수 없습니다. 나는 브로커 안정성에 대해 더 우려 할 것입니다, 왜냐하면 그것은 독립적으로 실행되어야하고 안정적인 큐잉/전달 등을 관리해야하기 때문입니다. RabbitMQ는 잘 작동하는 것 같습니다. 나는해야 할 일이 특정 시나리오에서 QPid/RabbitMQ를 실행하고 요금을 보는 것입니다. –

8

나중에 참조 할 수 있도록 Apache Qpid을 살펴보십시오.이 라이브러리에는 C++ 클라이언트 라이브러리가 있으며 매우 유용합니다. 귀하의 유스 케이스에 대한 문제는 Rabbit이 AMQP 0-8을 구현하고 Qpid C++ 클라이언트가 AMQP 0-10을 말하는 것입니다.

0

나는 이것이 조금 늦다는 것을 알고있다. 나는 구도자와 같은 입장에 서있다.

위의 답변에 대해 IceStorm과 Apache QPid를 보았습니다.

현재 나는 토끼 MQ를 가지고 있지만 C++와 통합하기가 쉽지 않습니다.

클라이언트와 서버 코드 모두를 제어 할 수 있고 AMQP "표준"이 필요하지 않으며 IceStorm이 필요한 것을 수행하고 GPL 라이센스로 멋지거나 라이센스를 구입할 준비가되었다고 생각합니다. zeroC에서) .. IceStorm은 가장 안정적이고 언어 간 해결책으로 보인다.