2017-10-13 148 views
1

我有@RabbitListener(id="example", queues={"a", "b"})侦听器,我复制粘贴在我的代码中的多个位置通过不同的模块。我想创造一个别名,如:我可以创建Spring RabbitListener别名吗?

@Target({ ElementType.TYPE, ElementType.METHOD, ElementType.ANNOTATION_TYPE }) 
@Retention(RetentionPolicy.RUNTIME) 
@MessageMapping 
@Documented 
public @interface MyRabbitListener { 

    @AliasFor(annotation = RabbitListener.class) 
    String id() default "example"; 

    @AliasFor(annotation = RabbitListener.class) 
    String containerFactory() default ""; 

    @AliasFor(annotation = RabbitListener.class) 
    String[] queues() default {"a", "b"}; 

    @AliasFor(annotation = RabbitListener.class) 
    boolean exclusive() default false; 

    @AliasFor(annotation = RabbitListener.class) 
    String priority() default ""; 

    @AliasFor(annotation = RabbitListener.class) 
    String admin() default ""; 

    @AliasFor(annotation = RabbitListener.class) 
    QueueBinding[] bindings() default {}; 

    @AliasFor(annotation = RabbitListener.class) 
    String group() default ""; 
} 

然后,我只是用我的方法@MyRabbitListener,但它不工作,因为我想有不spring-amqp模块别名支持呢。有什么方法可以注册我的别名吗?

回答

0

我刚刚意识到我犯了一个愚蠢的错误,没有正确创建别名。它应该看起来像这样:

@Target({ ElementType.TYPE, ElementType.METHOD, ElementType.ANNOTATION_TYPE }) 
@Retention(RetentionPolicy.RUNTIME) 
@MessageMapping 
@Documented 
@RabbitListener(id = "example", queues = {"a", "b"}) 
public @interface MyRabbitListener { 

    @AliasFor(annotation = RabbitListener.class) 
    String containerFactory() default ""; 

    @AliasFor(annotation = RabbitListener.class) 
    boolean exclusive() default false; 

    @AliasFor(annotation = RabbitListener.class) 
    String priority() default ""; 

    @AliasFor(annotation = RabbitListener.class) 
    String admin() default ""; 

    @AliasFor(annotation = RabbitListener.class) 
    QueueBinding[] bindings() default {}; 

    @AliasFor(annotation = RabbitListener.class) 
    String group() default ""; 
} 
相关问题