2010-01-29 24 views
4

我想創建一個能夠OCR文本的進程的場。 我想過使用由多個OCR進程讀取的消息的單個隊列。連接到消息隊列的多個消費者和生產者,這在AMQP中可能嗎?

我想確保:

  • 在隊列中的每個消息最終處理
  • 工作或多或少均勻分佈
  • 的圖像將僅由一個OCR處理被解析
  • OCR進程不會一次獲得多個消息(這樣任何其他免費的OCR進程都可以處理該消息)。

使用AMQP可以嗎?

我打算使用python和rabbitmq

回答

3

是的,這是可能的。我正在開發的實時MMO遊戲的服務器集羣以這種方式運行。我們使用ActiveMQ,但我認爲RabbitMQ也可以實現這一切。

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

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

做最後一次工作所需的方式,消費者發送特定AMQ參數的訂閱隊列時:

activemq.prefetchSize: 1 

此設置保證消費者不會拿在接收到一條消息之後再發送一條消息,直到它將ack發送給AMQ。我相信RabbitMQ中存在類似的東西。

5

是的,正如@nailxx指出的那樣。 AMQP編程模型與JMS略有不同,因爲您只有隊列,這些隊列可以在工作人員之間共享,或者由單個工作人員私下使用。您還可以輕鬆設置RabbitMQ來做PubSub用例或JMS中的什麼被稱爲主題。請轉到RabbitMQ web site上的我們的Getting Started頁面,查找大量有用的信息。

現在,對於您的使用情況,已經有很多可用的工具。人們用得很多,而且得到很好的支持的是Celery。這裏有一個關於它的blog post,我認爲這將幫助你開始:

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

+0

+1芹菜看起來很可愛。我會在最近的機會檢查出來。 – 2010-02-17 13:33:36