如何检查 spring-amqp 中 ConcurrentConsumers 的性能改进

how to check performance improvement by ConcurrentConsumers in spring-amqp

我是 Spring AMQP 模块的新手。我成功地创建了生成和使用消息的简单项目。我不明白的是:

如果SimpleMessageListenerContainer中只有一个listener,并发consumer不止一个,如何提高性能?根据我的理解,只要我有一个处理消息的监听器,无论有多少消费者(线程)从队列中获取消息都没有关系。

这是我的代码供您参考:

@Bean
public SimpleMessageListenerContainer messageListenerContainer() {
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory());
container.setQueues(someQueue());
container.setMessageListener(messageListenerAdapter());
container.setConcurrentConsumers(3);
return container;
}

我敢肯定,我的理解中遗漏了一些东西。有人可以扔灯吗?提前致谢。

容器将创建3个线程;每个都注册为消费者。它相当于创建 3 个单独的容器,每个容器有 1 个消费者。

每个消费者都会调用您的单个侦听器 - 它必须是线程安全的 - 不共享 data/fields 或必须同步访问任何此类数据。

但是,通常最好为您的侦听器使用无状态 bean,这样您就不必担心并发性问题。

如果您不能使侦听器线程安全,则必须创建 3 个单独的容器并为每个容器提供自己的侦听器实例。