DefaultMessageListenerContainer 并发消费者
DefaultMessageListenerContainer concurrentConsumers
我有一个关于具有多个并发消费者的 DefaultMessageListenerContainer 的问题,容器为每个消费者创建不同的会话,但对我来说问题是容器只允许所有消费者共享一个消息监听器实例,像这样我不能收到很多消息并并行处理它们,因为每个线程都会等待侦听器可用,让每个并发消费者都有一个独占的消息侦听器实例来处理消息不是更好吗?
容器设计用于线程安全(无状态)侦听器 - 即没有不受保护的全局状态。
听起来你使用synchronized
来保护状态,它一次只允许一个侦听器线程。
如果您不能使侦听器 bean 线程安全,则需要使用多个容器,每个容器具有不同的侦听器 bean(您可以使用原型作用域,以便每个容器获得自己的 bean),并发性 = 1。
我有一个关于具有多个并发消费者的 DefaultMessageListenerContainer 的问题,容器为每个消费者创建不同的会话,但对我来说问题是容器只允许所有消费者共享一个消息监听器实例,像这样我不能收到很多消息并并行处理它们,因为每个线程都会等待侦听器可用,让每个并发消费者都有一个独占的消息侦听器实例来处理消息不是更好吗?
容器设计用于线程安全(无状态)侦听器 - 即没有不受保护的全局状态。
听起来你使用synchronized
来保护状态,它一次只允许一个侦听器线程。
如果您不能使侦听器 bean 线程安全,则需要使用多个容器,每个容器具有不同的侦听器 bean(您可以使用原型作用域,以便每个容器获得自己的 bean),并发性 = 1。