簡體   English   中英

多個消費者和生產者連接到消息隊列,這在AMQP中是否可能?

[英]Multiple consumers & producers connected to a message queue, Is that possible in AMQP?

我想創建一個能夠OCR文本的進程場。 我曾考慮使用由多個OCR進程讀取的單個消息隊列。

我想確保:

  • 隊列中的每條消息最終都會被處理
  • 工作或多或少地平均分配
  • 圖像將僅由一個OCR進程解析
  • OCR進程不會立即獲得多條消息(因此任何其他免費的OCR進程都可以處理該消息)。

使用AMQP可以嗎?

我打算用python和rabbitmq

是的,正如@nailxx指出的那樣。 AMQP編程模型與JMS略有不同,因為您只有隊列 ,可以在工作人員之間共享,也可以由單個工作人員私下使用。 您還可以輕松設置RabbitMQ以執行PubSub用例或JMS中的內容稱為主題 請訪問RabbitMQ網站上的“ 入門”頁面,查找大量有用的信息。

現在,特別是對於您的用例,已經有很多工具可用。 人們正在大量使用並得到很好支持的是Celery 這是一篇關於它的博客文章 ,我認為這將有助於您入門:

如果您有任何疑問,請給我們發電子郵件或發送到rabbitmq-discuss郵件列表。

是的,這是可能的。 用於我正在進行的實時MMO游戲的服務器集群以這種方式運行。 我們使用ActiveMQ,但我認為RabbitMQ也可以實現這一切。

您提到的所有項目都是開箱即用的,除了最后一項。

  • 隊列中的每條消息最終都會被處理 - 這是消息代理的主要職責之一
  • 工作或多或少均勻分布 - 這是另一個:)
  • 圖像將僅由一個OCR進程解析 - 為此存在/ topic和/ queue的區別。 主題就像廣播信號,隊列是任務。 您的方案中需要/ queue

為了使最后一個以期望的方式工作,消費者在訂閱隊列時發送特定於AMQ的參數:

activemq.prefetchSize: 1

此設置可確保消費者在收到消息后不再接收任何消息,直到它向AMQ發送ack消息。 我相信RabbitMQ中存在類似的東西。

暫無
暫無

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

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