Ну, это невозможно. То, как вы хотите, не будет очередью .
Это действительно архитектурное решение: спроектировать одного слушателя и распространить его методы в соответствии с типом payload
.
В качестве обходного пути я могу предложить вам делегировать логику из одного @RabbitListener
класса в эти бизнес-сервисы:
@RabbitListener(queues = "foo")
public class MyListener {
private final ServiceA serviceA;
private final ServiceB serviceB;
public MyListener(ServiceA serviceA, ServiceB serviceB) {
this.serviceA = serviceA;
this.serviceB = serviceB;
}
@RabbitHandler
public void handleA(A a) {
this.serviceA.handle(a);
}
@RabbitHandler
public void handleB(B b) {
this.serviceB.handle(b);
}
}