2012-12-28 60 views
0

我有一個生產者,一個隊列和N個消費者。生產者創造'工作'由消費者執行。我希望使用拉式模型,在這種模型中,消費者從隊列中抽出工作,完成前一個工作,而不是用循環法推動模型,在這種模式中,工作被消費者等同分配。AMQP(Qpid)一對多隊列

我的消費者使用相同的代碼,但是當我運行它時,第一個連接並接收所有作業。即使在調試時看到它,第一個也會得到一切,但第二個等不會得到任何消息(即使它在第一個執行接收之前執行接收,它會返回一些作業)。

連接URL: 「AMQP://來賓:來賓@ prodconstest/brokerlist = 'TCP://127.0.0.1:5767'」

代碼爲每一位消費者的作用:

  1. 創建AMQConnection
  2. 創建具有自動隊列會話ACK
  3. 連接啓動
  4. 創建隊列"ADDR:" + queueName + "; {create: always, link:{x-subscribes: {exclusive: false}}}"
  5. 創建消費者

理論上可以使用AMQP隊列進行存檔嗎?如果是這樣,怎麼樣?

回答

0

看來我必須更改連接URL中的maxprefetch參數。缺省值5000對於我的用例來說太大了,將其更改爲1會使該系統正常工作。