wangzaiplus / springboot

java springboot redisson mybatis maven

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

关于项目中存在的两个疑问

Shouheng88 opened this issue · comments

commented
  1. 在 ConsumFactory 代理中,消息消费失败了,为什么被重新放到 mq 队列里面,如果这样的话,使用定时任务进行消费失败任务重新消费有什么意义?而且如果任务存在逻辑错误被反复投递,反复加入到 mq 队列中,这样会不断报错的。
  2. 假如开启了事务管理,你在一个服务里面将数据库记录插入到数据库,然后发送了消息,这个时候,mq服务器会出现查询不到数据的现象。因为发送耗时比较短,导致插入到数据库里的记录还没有提交,mq 服务器就查询去了,因此查询不到数据,这种情况有什么好的解决办法吗?
commented
  1. 在 ConsumFactory 代理中,消息消费失败了,为什么被重新放到 mq 队列里面,如果这样的话,使用定时任务进行消费失败任务重新消费有什么意义?而且如果任务存在逻辑错误被反复投递,反复加入到 mq 队列中,这样会不断报错的。
  2. 假如开启了事务管理,你在一个服务里面将数据库记录插入到数据库,然后发送了消息,这个时候,mq服务器会出现查询不到数据的现象。因为发送耗时比较短,导致插入到数据库里的记录还没有提交,mq 服务器就查询去了,因此查询不到数据,这种情况有什么好的解决办法吗?

针对问题2,解决方法有两个,第一个是在mq查询的时候做递归重试,第二种就是等事物提交之后在发送消息

commented

第二个我现在的解决方案是先写入 redis 中再同步到数据库,不过我还有个问题不是很明白,按照这种做失败消息重试的逻辑无法保证消息的顺序,这有什么好的解决办法吗