
1,redis与数据库一致性问题原来的项目代码中,redis和数据库对数据的修改是独立的这可能导致当数据库删除了某项数据之后redis由于网络波动服务器等问题刚好错过了这一次的小操作导致原本应该不存在的数据仍然保留在redis中出现脏数据的问题。我通过自定义retryupdateredis的方法将redis处理增删作为函数传进去在redis进行增删时回调这个方法重试最多三次确保redis和数据库的操作能够同步2对mq的消息确认机制进行了优化原先项目中mq并不存在消息确认机制因此为默认自动确认但是这会导致在某次消息处理失败后原有的消息直接被mq识别为确认而丢失因此我通过设置手动确认的机制以Header传入springAMQP自动识别的请求头delivertag作为idi对当前id的消息进行手动确认用trycatch包裹消息处理成功的逻辑成功是try channel接口下的basicack方法最多重试三次进行消息手动确认消息处理失败时走catch逻辑进行三次重试的channel.basicNack消息拒绝方法通过消息拒绝把这条消息送回消息队列避免消息的丢失。