Open 457352727 opened 6 months ago
怎么感觉你使用的有些复杂了,connectionFactory的executor你就不要手动设置了,让adapter自动去创建Proxy替换,是不就可以了
RabbitMqDtpAdapter 这个类判断 connectionFactory 中的 executor 不是 null 才会创建 Proxy 替换,但是在 2.1.9.RELEASE 版本的 Spring AMQP 中,如果不手动设置 connectionFactory 的 executor ,其默认就是 null
版本信息
问题描述
引入 rabbitmq adapter 后,使用 @RabbitListener 等注解预先定义好监听后,在项目启动后,再使用 RabbitListenerEndpointRegistry 注册监听时,出现 [java.util.concurrent.RejectedExecutionException]。
import javax.annotation.PostConstruct; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger;
@Configuration @AutoConfigureAfter({RabbitAutoConfiguration.class}) @AutoConfigureBefore({RabbitMqTpAutoConfiguration.class}) @EnableRabbit public class AmqpConfig {
}
复现步骤
按照上述编写完代码后,手动调用
RabbitListenerEndpointRegistry.registerListenerContainer(endpoint, listenerContainerFactory, true)
。其他信息
无