我可以创建一个 Spring RabbitListener 别名吗?

Can I make a Spring RabbitListener alias?

我有 @RabbitListener(id="example", queues={"a", "b"}) 侦听器,我将其复制粘贴到不同模块中代码的多个位置。我想创建一个别名,例如:

@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 模块的别名支持。有什么办法可以注册我的别名吗?

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

@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 "";
}