2012-04-09 36 views

Trả lời

2

Tôi đã hỏi một câu hỏi tương tự trên một số Nhóm cộng đồng dành cho nhà phát triển trên Facebook. Nó không phải là về GoogleAppEngine cụ thể - tôi hỏi trong một ý nghĩa chung hơn để xác định trường hợp sử dụng giữa RabbitMQ và Celery. Dưới đây là những câu trả lời tôi nhận được mà tôi nghĩ là có liên quan đến chủ đề và khá rõ ràng sự khác biệt giữa một hàng đợi tin nhắn và một hàng đợi nhiệm vụ.

Tôi hỏi:

Nó sẽ là thích hợp để nói rằng "Cần tây là một QueueWrapper/QueueFramework mà mất đi sự phức tạp của việc có để quản lý các hoạt động queueManagement/queueAdministration nội vv"?

Tôi hiểu ngôn ngữ sách có nội dung "Cần tây là hàng đợi công việc" và "RabbitMQ là một nhà môi giới thư". Tuy nhiên, có vẻ như một chút bối rối là người dùng cần tây lần đầu vì chúng tôi luôn biết rằng RabbitMQ là là 'hàng đợi'.

Xin giúp trong việc giải thích như thế nào/gì cần tây làm trong ProDic với RabbitMQ

A response tôi nhận được từ Abu Ashraf Masnun

công tác Queue và Message Queue. RabbitMQ là một "MQ". Nó nhận được tin nhắn và gửi tin nhắn.

Cần tây là Hàng đợi công việc. Nó nhận nhiệm vụ với dữ liệu liên quan của họ, chạy chúng và cung cấp kết quả.

Hãy quên Celery một chút. Hãy nói về RabbitMQ. Những gì chúng ta thường làm gì? Ứng dụng Django/Flask của chúng tôi sẽ gửi tin nhắn đến hàng đợi . Chúng tôi sẽ có một số công nhân đang hoạt động sẽ đợi các thông báo mới trong một số hàng đợi nhất định. Khi một tin nhắn mới đến, nó bắt đầu làm việc và xử lý các tác vụ.

Cần tây quản lý toàn bộ quá trình này một cách đẹp mắt. Chúng tôi không còn cần phải tìm hiểu hoặc lo lắng về các chi tiết của AMQP hoặc RabbitMQ. Chúng tôi có thể sử dụng Redis hoặc thậm chí một cơ sở dữ liệu (ví dụ MySQL) làm nhà môi giới thư. Celery cho phép chúng tôi xác định "Công việc" với mã công nhân của chúng tôi.Khi chúng ta cần phải làm một cái gì đó trong nền (hoặc thậm chí tiền cảnh), chúng ta chỉ có thể gọi tác vụ này (để thực thi ngay) hoặc lên lịch nhiệm vụ này để xử lý bị trì hoãn . Cần tây sẽ xử lý thông điệp đi qua và chạy các nhiệm vụ . Nó sẽ khởi động công nhân mà sẽ biết làm thế nào để chạy nhiệm vụ được xác định của bạn và lưu trữ kết quả. Vì vậy, sau này bạn có thể truy vấn kết quả nhiệm vụ hoặc thậm chí là tiến trình công việc khi cần.

Bạn có thể sử dụng Celery làm giải pháp thay thế cho cron job (mặc dù tôi không thực sự thích nó)!

Another response tôi nhận được từ Juan Francisco Calderon Zumba

sự hiểu biết của tôi là cần tây chỉ là một mức rất cao trừu tượng để thực hiện sản xuất/tiêu dùng của các sự kiện. Phải mất một số điều đau đớn bạn cần làm để làm việc ví dụ với thỏmq. Celery chính nó không phải là hàng đợi. Các hàng đợi sự kiện được lưu trữ trong hệ thống bạn chọn, cần tây giúp bạn làm việc với các sự kiện như vậy mà không cần phải viết nhà sản xuất/người tiêu dùng từ đầu.

Cuối cùng, đây là những gì tôi đã về nhà như học tập cuối cùng của tôi:

Cần tây là một hàng đợi Wrapper/Framework mà mất đi sự phức tạp của phải quản lý các cơ chế AMQP cơ bản/kiến ​​trúc đi kèm với hoạt động RabbitMQ trực tiếp

3

Hàng đợi công việc của GAE là phương tiện để cho phép ứng dụng thực hiện xử lý nền và sẽ không phân phối cùng mục đích với Hàng đợi thư. Chúng là những thứ rất khác nhau phục vụ các chức năng khác nhau.

Hàng đợi thư là cơ chế để chia sẻ thông tin, giữa các quy trình, chuỗi, hệ thống.

Hàng đợi nhiệm vụ AppEngine là một cách để ứng dụng AppEngine tự nói, tôi cần thực hiện việc này, nhưng tôi sẽ làm điều này sau, bên ngoài ngữ cảnh yêu cầu của khách hàng.

+3

Không có khác biệt chức năng (mà tôi biết) giữa hàng đợi tin nhắn và hàng đợi kéo trên App Engine. –

Các vấn đề liên quan