Meta-Annotationen werden in diesem Kontext nicht funktionieren, da die @RabbitListener
bindings
-Eigenschaft ein QueueBinding[]
ist und Anmerkungen keine Vererbung haben.
Um es zu implementieren würde eine benutzerdefinierte RabbitListenerAnnotationBeanPostProcessor
aber, da es nicht in einer generischen Weise getan werden kann, ich glaube nicht, dass es Teil des Frameworks sein kann, zumindest in der Art, wie Sie beschreiben.
Wir könnten aber in der Lage sein, das Boilerplate auf andere Weise zu reduzieren; Fühlen Sie sich frei, eine JIRA issue zu öffnen, und wir können einen Blick darauf werfen, was möglich sein könnte.
EDIT
Nach dem JIRA Issue Empfangen ich darüber nachgedacht etwas mehr und Sie können mit @RabbitListener
...
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@RabbitListener(bindings = @QueueBinding(
value = @Queue,
exchange = @Exchange(value = "test.metaFanout", type = ExchangeTypes.FANOUT, autoDelete = "true")))
public @interface MyAnonFanoutListener {
}
public static class MetaListener {
@MyAnonFanoutListener
public void handle1(String foo) {
...
}
@MyAnonFanoutListener
public void handle2(String foo) {
...
}
}
Jede Ihre gewünschten Ergebnisse mit einem benutzerdefinierten Zuhörer Anmerkung, Meta-kommentierten erreichen Der Listener erhält eine an den Fanout-Austausch gebundene anonyme, automatisch löschende Warteschlange.