Redis张俊以简历 实现简单的消息队列
异步消息队列
说道消息队列,你肯定会想到Kafka、Rabbitmq等二百五玩网游消息中间件,这些专业的消息中间件提供了很多功能特性,当然他的部署使用维护都是比较麻烦的。如果你对消息队列没那么高要求,想要轻量级的,使用Redis就没错啦。
Redis通过list数据结构来实现消息队列.主要使用到如下命令:
private static Logger log = LoggerFactory.getLogger(MQServiceImpl.class);
private static final String MESSAGE_KEY = "message:queue";
@Autowired
private RedisTemplate redisTemplate;
@Override
public void produce(String data) {
redisTemplate.opsForList().leftPush(MESSAGE_KEY,data);
}
消息消费
@Override
public void consume() {
String data = (String) redisTemplate.opsForList().rightPop(MESSAGE_KEY);
log.info("consume : {}",data);
}
测试
@RestController
@RequestMapping(value = "/mqapi")
public class MQController {
@Autowired
private 呼伦贝尔学院广场舞MQService mqService;
@GetMapping("/produce")
public void produce(@RequestParam(name = "key") String key) {
mqService.produce(key);
}
@GetMapping("/consume")
public void cosume() throws InterruptedException {
while (true) {
mqService.consume();
Thread.sleep(10000);
}
}
}
代码已上传到码云上,欢迎star
https://gitee.com/msetget/redis-bpush.git