2011-03-30 89 views
0

是否有一個消息解決方案(最好支持Python),我可以使用像郵箱,例如從任何給定的隊列中檢索消息而不必訂閱?我認爲消息隊列可以工作,但我必須重複訂閱,從隊列中獲取消息,然後取消訂閱,這聽起來並不理想。協議檢索和發佈消息(消息隊列沒有pub/sub)

回答

1

大部分(如果不是全部)消息解決方案支持短信兩種模式

  • 發佈\訂閱,也就是說,你需要訂閱得到的消息。

  • 排隊 - 一方向隊列發送消息,另一方從隊列中讀取消息 - 不需要預訂,消息在讀取時消耗。

其實,標準的隊列是比較常見的,然後發佈訂閱 - 你必須找到一個支持排隊的工具更好的機會,但不是酒館\子,然後找到支持酒館\子但不排隊的工具。

您可能正在尋找第二模式

0

有很多選擇。這裏有兩個:

  1. 看看Redis。有兩個Python客戶端庫(參見redis-pytxRedis)。您所描述的操作(類似郵箱的操作)可以通過在Redis的列表中執行blpop來模擬。

  2. 另一種選擇是RabbitMQ。它有很多Python客戶端庫py-ampqlibtxAMQP。您可以通過執行basic.getbasic.ack(有關更多信息,請參閱this reference)將此視爲類似郵箱的隊列。

+0

是不是在模擬Redis的消息隊列,或任何與此有關的數據庫,一個次優解?畢竟,像RabbitMQ這樣的專用消息隊列已經解決了你自己模擬隊列行爲時必須解決的大多數問題。 – Elad 2011-03-30 07:34:55

+0

「次優」的定義是什麼?那隊列是如何「模擬」的?你的意思是缺乏必要的認知? – rlotun 2011-03-30 23:45:43

+0

我的意思是,最好使用現有的隊列實現,可能會處理最常見的問題和邊緣情況,而不是自己實現一個。 – Elad 2011-03-31 07:18:20

0

的RabbitMQ - http://www.rabbitmq.com

ZeroMQ - http://www.zeromq.org

亞馬遜SQS - http://aws.amazon.com/sqs

所有這三個有Python庫。 前兩個是免費的。如果您不發送和接收數百萬條消息,SQS成本非常低,並且具有高可用性的優點,並且無需您自己管理主機。

關於訂閱和取消訂閱,如果您從隊列中拉取消息,而不是讓隊列將消息推送給您(pub/sub),那麼您沒有訂閱和取消訂閱。在上面的所有例子中,您不會承擔任何開銷。