2010-02-14 36 views
9

Chúng tôi đang viết mã C++ cần nhắn tin. Có một máy chủ AMQP miễn phí/mã nguồn mở và ổn định có sẵn có thư viện ứng dụng C++ ổn định như nhau với nó hay không. Chúng tôi cũng cần cung cấp giao diện Python cho mã của chúng tôi cho người dùng (ý tưởng là làm công cụ tối đa trong C++ và hiển thị API bằng Python).Thực hiện AMQP C++

Cách tốt nhất để đạt được điều này.

+0

Hi, xin lỗi là việc trả lời email nên chậm chạp trong việc này. Chúng tôi chỉ tìm thấy nó. Có sự quan tâm đến việc sử dụng trình khách C RabbitMQ và cung cấp giao diện cho nó trong C++ theo thành ngữ C++. Điều này đã được thảo luận trong danh sách gửi thư của RabbitMQ, mà tôi khuyên bạn nên nếu bạn có câu hỏi. Một giao diện dự thảo đã được đề xuất. Nhưng, tại sao không chỉ sử dụng ứng dụng khách C? Xin vui lòng liên lạc và cho chúng tôi biết. Bạn có thể gửi email đến [email protected] hoặc đăng lên trang thảo luận. Chúc mừng alexis – alexis

Trả lời

1

AMQP có thể khá phức tạp để hiểu - Tôi đề nghị Sử dụng Protocol Buffers để mã lớp giao tiếp của bạn, nó tạo ra cả hai python và C++. nếu nhu cầu của bạn quá phức tạp, tôi sẽ đề xuất ICE vì nó hỗ trợ mọi ngôn ngữ lập trình mà bạn có thể nghĩ đến và tôi tin rằng nó cũng xử lý định dạng bộ đệm giao thức.

- chỉnh sửa -

Nếu bạn đang sử dụng AMQP, bạn nên nhìn vào Zero MQ. Nó có một thực thi C++ của AMQP. Tuy nhiên, họ đang chuyển nó sang một triển khai thuần túy-C.

+0

Cảm ơn Hassan, dự án mà tôi đang làm đã sử dụng AMQP với Java Client API (Rabbit MQ) nên chúng tôi muốn tiếp tục sử dụng AMQP làm phần mềm trung gian, tuy nhiên tôi không thể tìm thấy ứng dụng C++ tốt triển khai cho bất kỳ AMQP nguồn mở nào. –

+0

Có phần tử hàng đợi giao dịch với bộ đệm giao thức không? Tôi nghĩ nó hoàn toàn là một cơ chế tuần tự hóa? –

+0

Nó không có hàng đợi giao dịch. –

2

Apache QPid dường như có liên quan ở đây. Có một thư viện môi giới/khách hàng C++ here.

Lưu ý rằng vì bạn đang lập trình cho giao thức (AMQP), nhà môi giới/khách hàng của bạn không nhất thiết phải ở cùng một ngôn ngữ. ví dụ. Tôi đang sử dụng Scala và C# khách hàng nói chuyện với RabbitMQ (một nhà môi giới Erlang).

+0

Cảm ơn Brian, tôi đã nhận nó, vì vậy tôi sửa câu hỏi của tôi, có một môi giới AMQP có hỗ trợ thư viện khách hàng C++ ổn định. –

+0

Tôi không thể bình luận về sự ổn định của QPid, tôi sợ. Tôi sẽ quan tâm nhiều hơn đến sự ổn định của nhà môi giới, vì điều đó phải chạy độc lập và quản lý xếp hàng/giao hàng đáng tin cậy, vv ThỏMQ dường như hoạt động tốt. Tôi nghi ngờ điều cần làm là để chạy QPid/RabbitMQ trong kịch bản cụ thể của bạn và xem nó như thế nào giá vé. –

8

Để tham khảo trong tương lai, hãy xem Apache Qpid - nó có thư viện khách C++ và rất tốt. Vấn đề đối với trường hợp sử dụng của bạn là Rabbit triển khai AMQP 0-8 và máy khách Qpid C++ nói AMQP 0-10.

0

Tôi biết điều này hơi muộn, tôi thuộc cùng một vị trí với người hỏi.

Tôi đang xem IceStorm và Apache QPid cho mỗi câu trả lời ở trên.

Hiện tại tôi có thỏ MQ nhưng không dễ dàng tích hợp với C++.

Tôi nghĩ rằng nếu bạn có quyền kiểm soát cả mã máy khách và máy chủ, và bạn không cần AMQP "tiêu chuẩn" và IceStorm thực hiện những gì bạn cần, và bạn thật tuyệt với giấy phép GPL (hoặc sẵn sàng mua giấy phép từ zeroC) .. IceStorm có vẻ là giải pháp ổn định và đa ngôn ngữ nhất.