我可以创建一个 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 "";
}
我有 @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 "";
}