我希望在存在属性时创建RabbitListener,但@ConditionOnProperty不能与@RabbitListener结合使用。现在我有一个解决方法如下。它有没有更好的方法?
@Bean
@ConditionalOnProperty(name = "pmc.multiple.hypervisor.reply.routerkey.kvm")
public SimpleMessageListenerContainer kvmReplyQueueConsumer() {
return getSimpleMessageListenerContainer(environment
.getProperty("pmc.multiple.hypervisor.reply.routerkey.kvm"));
}
答案 0 :(得分:1)
你真的尝试过吗?这对我来说很好......
public static class ConditionalListener {
@RabbitListener(queues="test.queue")
public void listen(String foo) {
System.out.println(foo);
}
}
@ConditionalOnProperty("foo.enabled")
@Bean
public ConditionalListener foo() {
return new ConditionalListener();
}
使用-Dfoo.enabled=true
运行时,我收到消息;否则bean不会被声明。
答案 1 :(得分:0)
您可以为单个类使用@Component 和@Conditional