个人理解:生产者把数据保存到数据库当中然后发送消息给队列,消费者监听到队列的消息,然后把数据存到自己的数据库当中,并且发送一条保存成功的确认消息,当回调检查服务监听到的时候,会将消息写入到数据库当中,这时候我们的延迟发送消息也出来了,他会再走一遍原先的流程,去和回调检查服务当中的数据做一个对比,如果相同,说明存储成功,如果数据库中不存在,那么很明显消费者那边肯定出了问题,我们可以重新调用生产者再次生产一条消息发送过去,之后再次进行对比判断
可能会出现的很少见的一种原因:我们的生产者发送消息也失败了,那么有没有什么办法可以避免这种情况的发生呢?
在我们的回调检查服务数据库当中有一个定时检查服务,它每隔一段时间会定期去和生产者的数据库进行一个数据匹配,如果匹配不上会自动让生产者的数据库去再次发送消息,这就可以解决我们的需求