是否有一個消息解決方案(最好支持Python),我可以使用像郵箱,例如從任何給定的隊列中檢索消息而不必訂閱?我認爲消息隊列可以工作,但我必須重複訂閱,從隊列中獲取消息,然後取消訂閱,這聽起來並不理想。協議檢索和發佈消息(消息隊列沒有pub/sub)
0
A
回答
1
大部分(如果不是全部)消息解決方案支持短信兩種模式
發佈\訂閱,也就是說,你需要訂閱得到的消息。
排隊 - 一方向隊列發送消息,另一方從隊列中讀取消息 - 不需要預訂,消息在讀取時消耗。
其實,標準的隊列是比較常見的,然後發佈訂閱 - 你必須找到一個支持排隊的工具更好的機會,但不是酒館\子,然後找到支持酒館\子但不排隊的工具。
您可能正在尋找第二模式
0
有很多選擇。這裏有兩個:
看看Redis。有兩個Python客戶端庫(參見redis-py和txRedis)。您所描述的操作(類似郵箱的操作)可以通過在Redis的列表中執行
blpop
來模擬。另一種選擇是RabbitMQ。它有很多Python客戶端庫py-ampqlib和txAMQP。您可以通過執行
basic.get
和basic.ack
(有關更多信息,請參閱this reference)將此視爲類似郵箱的隊列。
0
的RabbitMQ - http://www.rabbitmq.com
ZeroMQ - http://www.zeromq.org
亞馬遜SQS - http://aws.amazon.com/sqs
所有這三個有Python庫。 前兩個是免費的。如果您不發送和接收數百萬條消息,SQS成本非常低,並且具有高可用性的優點,並且無需您自己管理主機。
關於訂閱和取消訂閱,如果您從隊列中拉取消息,而不是讓隊列將消息推送給您(pub/sub),那麼您沒有訂閱和取消訂閱。在上面的所有例子中,您不會承擔任何開銷。
相關問題
- 1. 隊列中沒有消息
- 2. 消息隊列+ ajax沒有觸發
- 3. DNS協議,消息
- 4. 從隊列中獲取消息只檢索單條消息
- 5. 從RabbitMQ隊列中檢索消息
- 6. 從消息隊列中檢索數據
- 7. 在JMS隊列上發佈消息?
- 8. 從Web API發佈到消息隊列
- 9. 在遠程隊列中發佈消息
- 10. 消息傳遞協議
- 11. XMPP:消息協議格式
- 12. Objective-C協議不發送消息
- 13. 自定義協議不發送消息
- 14. 協議緩衝區 - 讀所有消息的公共消息頭(嵌套消息)
- 15. 沒有本地消息隊列服務器的遠程消息隊列
- 16. APNS和消息隊列
- 17. SQL Server和消息隊列
- 18. STOMP消息沒有到達隊列
- 19. 消息隊列:每條消息保證
- 20. 消息隊列中的多條消息
- 21. 消息隊列與消息傳遞
- 22. 消息隊列發送和接收
- 23. 我可以使用高級消息隊列協議(AMQP)嗎?
- 24. AWS:從Lambda向SQS隊列發送消息時沒有可用消息
- 25. Websphere消息隊列
- 26. 消息從隊列
- 27. Sinatra消息隊列
- 28. Boost消息隊列
- 29. unix消息隊列
- 30. IPC - 消息隊列
是不是在模擬Redis的消息隊列,或任何與此有關的數據庫,一個次優解?畢竟,像RabbitMQ這樣的專用消息隊列已經解決了你自己模擬隊列行爲時必須解決的大多數問題。 – Elad 2011-03-30 07:34:55
「次優」的定義是什麼?那隊列是如何「模擬」的?你的意思是缺乏必要的認知? – rlotun 2011-03-30 23:45:43
我的意思是,最好使用現有的隊列實現,可能會處理最常見的問題和邊緣情況,而不是自己實現一個。 – Elad 2011-03-31 07:18:20