在4-3节课中,老师说过这么一段话:
deliveryTag和channel相关,而且不是全局唯一的,如果起了多个横向扩展的orderservice,多个同时发送的消息之中,deliveryTag是很可能重复的。
假如两个线程并发调用com.imooc.food.orderservicemanager.service.OrderService#createOrder方法,deliveryTag是我这个channel发送的第几条消息,那如果我同时有两个业务线程在跑的话,也就是调用createOrder方法,该方法内connection.createChannel(),channel是不一样的,那么deliveryTag是有可能重复的。
假设现在有3个orderservice微服务实例,同时有3个请求分别到达,按您说的会有deliveryTag重复。那么在(restaurant微服务的)AbstractMessageListener通过deliveryTag去对消息进行ACK,此时队列知道哪个消息是需要被ACK的吗?怎么知道的?