redis做消息队列,重复插入数据库问题

93年的香槟 2016-11-22 10:50:24
项目概述:
1.目前的项目是用redis做了一个消息队列,在listener监听到广播后,调用service函数,service函数会调用DAO插入数据库
问题概述:
1.查看服务器日志,一次请求,只有一个listener线程调用了1次service函数,但是数据库结果是插入了重复的2条数据
BUG检查:
1.如果不用消息队列,正常主函数访问service数据库只插入1条数据,合理
2.如果使用消息队列,listener调用service,数据库插入2条数据,不合理
3.如果使用消息队列,listener调用service,但数据库增加唯一性索引字段,数据库插入1条数据,另一次插入被回滚,勉强合理
4.在windows本机环境,启用redis,listener调用service,数据库插入1条,合理

1楼贴上日志与代码信息
可能猜想与疑问:
1.redis配置存在问题,但是查看服务器日志确实只有1条线程在活动
...全文
1473 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
CitizenF 2017-11-29
  • 打赏
  • 举报
回复
请问楼主怎么解决的?
yql1986 2017-03-09
  • 打赏
  • 举报
回复
其实 我建议你使用 抓包工具wireshark ,抓一包 看一下 确认一下是重复发送了两次数据
yql1986 2017-03-09
  • 打赏
  • 举报
回复
spring-data-redis用的是哪个版本啊??? 日志也看不出啥问题 只能从日志看出插入重复的数据,数据库报错 看不出来是否是重复消费消息队列中的数据导致还是其它原因引起的
sinat_26106575 2017-03-09
  • 打赏
  • 举报
回复
解决没有,我也遇到这个问题了
93年的香槟 2016-11-22
  • 打赏
  • 举报
回复





50,545

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧