1. 首先确认下,该方案消息是不做手动 Ack 的,消费端是通过,向 CallBack 发送消息来确定是否消费成功
2. 生产者发送业务消息和延迟消息是不是不需要做 ConfirmListener 与 ReturnListener。
假想场景,生产者发送业务消息到 Broker 失败,延迟消息发送成功,ConfirmLisener 监听,业务消息进行重发。CallBack 收到延迟消息后会调用 RPC 进行重试补偿,这样看来,ConfirmListener 中进行的重发是不是多余的。(明确消费端会做幂等处理)
在上面假想的基础上,延迟消息应该要做 ConfirmListener,不然延迟消息发送失败,不重发,CallBack 就无法进行重试了。
3. 最后问一下老师,生成者发送的延迟消息,是程序进行延时发送,还是同时将一个消息发送到一个延时队列中。