1

Spring AMQP:比较多个消费者与每个消费者的多个线程的性能

我正处于从 Spring doc 学习 Spring AMQP 的阶段。我不清楚增加消费率异步消息的首选方法:根据 Spring 文档(http://docs.spring.io/spring-amqp/docs/1.2.1.RELEASE/reference/html/amqp.html#d4e329 ) ,以下两点用于配置 SimpleMessageListenerContainer:

  1. concurrency => 为每个侦听器启动的并发消费者数量。在增加计数时,这将增加队列中接收的消费者数量。

  2. taskExecutor => 默认情况下,这确保为每个传入消息创建新线程

所以,我假设如果我们有无限线程来执行任务(第 2 点),那么就没有必要增加消费者的数量。请求验证我的假设并发送您记录的任何性能点

4

1 回答 1

4

不; 每条传入消息都没有新线程;每个消费者都有一个线程。如果您使用 ThreadPool 执行器,它需要有足够的线程用于配置的消费者数量。默认任务执行器通常就足够了。

消费者线程调用你的监听器;如果您的侦听器平均需要 1 秒来处理一条消息,那么在并发 1 的情况下,您的最大吞吐量为每秒 1;并发2,每秒2。等等等等。

于 2014-02-14T14:34:21.587 回答