簡體   English   中英

無法理解如何使用 RabbitMQ

[英]Trouble with understanding how RabbitMQ can be used

我目前正在開發一個需要實現 RabbitMQ 的 Python web 應用程序。 該應用程序的結構如下:

  1. 客戶端連接到 HTTP 服務器

  2. 他的連接被發送到連接到我的應用程序主要服務的消息隊列

  3. 主服務接收消息並向用戶提供他的信息

我了解如何使用網站上的文檔和教程來完成 RabbitMq 工作,但我無法看到它如何處理實際任務,例如顯示 web 頁面或打印文件? 我的服務如何連接到消息隊列將讀取收到的消息並說:“哦,我要顯示這個網頁”。

抱歉,如果這令人困惑,如果您需要進一步解釋我想要得到的東西,請告訴我。

謝謝閱讀!

RabbitMq可以很好地向可以執行長時間運行過程的服務發送消息 - 即下載大文件,生成復雜的 animation。 Web 服務器不能(或不應該)執行長時間運行的進程。

Web 頁面向RabbitMq發送消息(即帶有長時間運行過程的參數)並獲取唯一編號。 當服務有空閑工作人員時,它會檢查隊列中是否有新消息,獲取它(具有唯一編號)並啟動工作人員。 當工人完成工作時,服務將結果發送到具有相同唯一編號的RabbitMQ

同時 web 頁面使用 JavaScript 運行循環,定期檢查RabbitMQ是否有具有此唯一編號的結果。 如果沒有結果則可能會顯示progressbar條,如果有結果則可能會顯示此結果。


示例: Celery - 分布式任務隊列

Celery可以使用RabbitMQDjangoFlask通信。
(但它可以使用其他模塊,即Redis

使用 Celery 和 Django

Flask - Celery 后台任務


來自Celery 回購

Celery is usually used with a message broker to send and receive messages. 
The RabbitMQ, Redis transports are feature complete, but there's also 
experimental support for a myriad of other solutions, including using 
SQLite for local development.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM