@RabbitListener 可以按条件申请吗

Can @RabbitListener apply by condition

我想在 属性 存在时创建一个 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"));
} 

你真的试过了吗?这对我来说很好...

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。

您可以对单个 class

使用 @Component 和 @Conditional