redisTemplate.opsForList().leftPop(xxxx):获取第一个元素并删除第一个元素。会出现redis中取到值为空的情况,可以等待一段时间再次获取消息。
public void strollingTask() {
// 从redis中获取弹幕Id数组
String vedioIdKey = Constant.VEDIO_ID;
// 获取第一条数据并删除
Object vedioId = redisTemplate.opsForList().leftPop(vedioIdKey);
if (vedioId != null) {
// 回复id
String vedioScrollingKey = Constant.VEDIO_STROLLING_QUEUE.replace("{vedioId}", vedioId.toString());
// 获取第一条数据并删除
Object _hdScrolling = redisTemplate.opsForList().leftPop(vedioScrollingKey);
HdScrolling hdScrolling = (HdScrolling) _hdScrolling;
hdScrollingService.insertHdScrolling(hdScrolling);
} else {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}