Rabbitmq 单队列、多个@RabbitListener但不同的服务

Rabbitmq 单队列、多个@RabbitListener但不同的服务,rabbitmq,amqp,spring-amqp,Rabbitmq,Amqp,Spring Amqp,是否可以有一个@RabbitListener,例如: @RabbitListener(queues = STORAGE_REQUEST_QUEUE_NAME) public FindApplicationByIdResponse findApplicationById(FindApplicationByIdRequest request) { return repository.findByUuid(request.getId()) .map(e -> ne

是否可以有一个@RabbitListener,例如:

@RabbitListener(queues = STORAGE_REQUEST_QUEUE_NAME)
public FindApplicationByIdResponse findApplicationById(FindApplicationByIdRequest request) {
    return repository.findByUuid(request.getId())
            .map(e -> new FindApplicationByIdResponse(conversionService.convert(e, Application.class)))
            .orElse(new FindApplicationByIdResponse(null));
}

@RabbitListener(queues = STORAGE_REQUEST_QUEUE_NAME)
public PingResponse ping(PingRequest request) {
    return new PingResponse();
}
在用户端,它将向相同的请求队列发送请求,但操作不同?现在,它将对象从Json转换为对象(例如:FindApplicationByIdRequest或PingRequest)

但是现在,当我拿回来的时候:

@Override
public FindApplicationByIdResponse findApplicationById(FindApplicationByIdRequest request) {
    Object object = template.convertSendAndReceive(Queues.STORAGE_REQUEST_QUEUE_NAME, request);
    return handleResponse(FindApplicationByIdResponse.class, object);
}

@Override
public PingResponse ping(PingRequest request) {
    Object object = template.convertSendAndReceive(Queues.STORAGE_REQUEST_QUEUE_NAME, request);
    return handleResponse(PingResponse.class, object);
}
看起来它没能把两者联系起来。所以我调用ping方法,然后在该方法中得到FindApplicationByIdResponse。 为什么呢

当我为他们使用不同的队列时,效果很好。但我最终不得不排很多队来支持我希望进行的所有RPC调用。
有人知道是否可以将请求类型用作它将要使用的限定符吗?

在方法级别上不能使用
@RabbitListener
,但在类级别上可以使用
@RabbitHandler
方法:

@RabbitListener(queues = STORAGE_REQUEST_QUEUE_NAME)
public class MultiListenerBean {

    @RabbitHandler
    public String bar(Bar bar) {
        ...
    }

    @RabbitHandler
    public String baz(Baz baz) {
        ...
    }

    @RabbitHandler
    public String qux(@Header("amqp_receivedRoutingKey") String rk, @Payload Qux qux) {
        ...
    }

}

链接不幸断开。