投喂
2024-07-22 11:43:13 0 举报
123
作者其他创作
大纲/内容
投喂失败(业务逻辑错误、设备下线...)
否
投喂成功
是
查询数据库当前喂食器正在喂食的记录
缓存rediskey--feeding:deviceIdvalue--feedContext
投喂失败
宠豆是否扣减成功
喂食器是否正在喂食
将feedContext添加至 live_feed_queue 判断是否存在排队 是-返回排队 否-返回并移除第一个喂食上下文;释放锁
投喂中
redis添加未出粮缓存,发送消息通知小院删除投喂中缓存、退回用户宠豆并生成宠豆退回明细、修改投喂状态(未出粮)
1、查询喂食超过15s的喂食器2、调用萤石接口查询喂食结果3、修改喂食结果并进行后续操作
投喂开始
是否缺粮
接口是否调用成功
当前喂食器是否存在喂食中缓存
通过缓存查询喂食记录
未出粮
分配喂食器操作
新增投喂记录(等待投喂)
接收消息
返回并移除live_feed_queue第一个用户;释放锁
结束
调用萤石接口失败
投喂初始化
扣减用户宠豆并生成宠豆消费明细,生成喂食上下文(feedContext)
查询直播间投食器列表(开播并且绑定喂食器)
记录是否成功
线程池异步处理
调用萤石接口
是否存在喂食器
定时任务 10s
喂食列表
喂食器是否存在未出粮缓存
A喂食器不缺粮,B喂食器缺粮A喂食中此时有新用户投喂多次 处理方案等待A喂食器结束
是否投喂多次
退还宠豆
A喂食器不缺粮,B喂食器缺粮B喂食器未出粮,将用户切到A喂食器进行投喂
成功
投喂失败(宠豆不足)
失败
线程池异步处理删除投喂中缓存、退回用户宠豆并生成宠豆退回明细、修改投喂状态(投喂失败)
该喂食器是否存在未出粮缓存,存在则删除删除投喂中缓存、增加用户宠豆消耗数量、修改投喂状态(投喂成功)
使用liveId生成公平锁并加锁
是否排队
排队
查询喂食器缺粮状态缓存没有缓存查接口,将结果缓存redis 过期时间1min
0 条评论
下一页