2017-10-13 15 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 ""; 
} 
関連する問題