@RabbitListener可以按条件申请

时间:2015-10-21 08:19:35

标签: rabbitmq spring-amqp spring-rabbit

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

2 个答案:

答案 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