【问题标题】:RabbitMQ Producer ThreadpoolRabbitMQ 生产者线程池
【发布时间】:2014-07-20 19:57:18
【问题描述】:

根据文档,RabbitMQ 为每个 RabbitMQ Connection(相对于通道)都有一个线程池。

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

这是一个合理的默认值。每个连接可以有一个队列,每个队列最多有 5 个工作线程来处理请求。但是,没有提及生产者的线程数。每个连接都有一个最多 5 个线程的线程池的一揽子声明隐含地意味着每个 Producer 在与 RabbitMQ 代理的连接上建立一个新通道,该代理也将绑定到相同类型的线程池。

如果是这样的话,每次调用sendMessage 最终都会使用线程池吗?

【问题讨论】:

    标签: java multithreading rabbitmq threadpoolexecutor


    【解决方案1】:

    每个线程应该有一个 Channel 而不是一个 Connection。您应该只有一个连接。

    “发布者线程”没有限制,但是您可以在每个频道一次发送一条消息。

    考虑到您正在使用类似的代码

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

    【讨论】:

    • 对不起,我的意思是频道不是连接。
    • 我做了,如果你愿意检查的话。我知道每个线程有一个通道,每个队列有一个连接,我在问题中确定了这一点。问题是,sendMessage 是否使用线程池中的不同线程向rabbitmq 发送消息
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 2016-07-27
    • 2018-09-24
    • 2017-02-01
    • 2012-04-30
    • 1970-01-01
    相关资源
    最近更新 更多