在我的场景中,我需要在运行时动态地创建大量队列,这就是为什么我不想使用@Bean,而是想要编写一个创建队列的函数,我会在需要的时候调用它。在这里,当我使用@bean注解时,它会在rabbitmq服务器上创建队列。
@Bean
public Queue productQueue(final String queueName) {
return new Queue(queueName);
} 但是使用不带@Bean的相同代码
public Queue productQueue(final String queueName) {
return new Queue(queueName);
}当调用此函数不在rabbitmq服务器上创建队列时
Queue queue = <Object>.productQueue("product-queue");发布于 2021-10-30 09:12:55
Queue对象必须是上下文中的bean,并且由Spring管理。要在运行时动态创建队列,请使用作用域prototype定义bean
@Bean
@Scope("prototype")
public Queue productQueue(final String queueName) {
return new Queue(queueName);
} 并在运行时使用ObjectProvider创建队列
@Autowired
private ObjectProvider<Queue> queueProvider;
Queue queue1 = queueProvider.getObject("queueName1");
Queue queue2 = queueProvider.getObject("queueName2");https://stackoverflow.com/questions/69776621
复制相似问题