问题来源于RabbitMQ RPC模式教程:https://www.rabbitmq.com/tuto...
Client获取到Server返回的数据后,需要比对correlation_id是否相同,在官方给出的例子中,如果correlation_id不同,没有做处理:
String ctag = channel.basicConsume(replyQueueName, true, (consumerTag, delivery) -> {
if (delivery.getProperties().getCorrelationId().equals(corrId)) {
response.offer(new String(delivery.getBody(), "UTF-8"));
}
}, consumerTag -> {
});
我的问题是:
1.如果Client发送了分别含有多个correlation_id的请求,correlation_id为A的请求有没有可能获取到correlation_id为B的结果?
2.如果A获取到correlation_id为B的消息,是不是意味着获取到了B请求的结果?
3.这段代码显示如果获取到非A的结果,不做任何处理,是不是就相当于丢弃了B的结果?那么B请求该怎么办?
这是用 MQ 模拟的 RPC,所谓的请求和响应其实还是走的发布和订阅机制。
既然是发布订阅,那本来也不是一一对应的关系,所以要判断啊。
回到你的问题: