我们在做系统的时候,有时候会遇到迁移数据或者处理任务(任务量又比较大),比如把redis的数据取出来做一些操作,然后处理完的数据在存到hbase
我们需要考虑到数据处理过程中失败情况,需要处理高并发去执行,具体怎么设计,怎么做呢,
有一种简单的方式如下:
1我们先把任务数据存到redis任务队列里
2定义一个bean启动3个线程来处理
线程1的:从任务队列取出数据,同时存到备份队列,用redis命令lpoprpush,然后把任务交给线程池去处理,任务执行成功从备份队列删除,失败进入失败队列
线程2:定时从备份队列取数据到任务队列,并发任务从备份队列删除
线程3:定时从失败队列取数据到任务队列,并把任务从失败队列删除