2014-07-20 55 views
0

根據文檔,RabbitMQ爲每個RabbitMQ Connection(與通道相對)都有一個線程池。RabbitMQ Producer線程池

http://rabbitmq.1065348.n5.nabble.com/Limitations-with-RabbitMQ-Java-Client-tp30727p30768.html

這使得一個合理的默認。每個連接可以有一個隊列,每個隊列最多有5個工作線程提取請求。然而,關於Producer的線程數量沒有任何說法。每條連接有最多5個線程的線程池隱含聲明意味着每個生產者在與RabbitMQ代理的連接上建立一個新的通道,這個代理也將綁定到相同類型的線程池。

如果是這樣的話,每個調用sendMessage最終會使用線程池?

回答

0

您應該每個線程有一個通道而不是連接。你應該只有一個連接。

「發佈者線程」沒有限制,但是您可以每個通道一次發送一條消息。

通過考慮你正在使用類似的代碼

channel.basicPublish("", QUEUE_NAME, null, message.getBytes()); 
+0

對不起,我的意思通道未連接。 –

+0

然後更正您的問題。 – Zarathustra

+0

我做過了,如果你打擾檢查。我知道每個線程有一個通道,每個隊列有一個連接,我在問題中確定了這一點。問題是,'sendMessage'使用線程池中的不同線程來發送消息給rabbitmq –