Redis消息隊列
同學們是否有過類似開發過程中的糾結?
那麼Redis就可以做到,實現一個超級簡單的消息隊列。
當然第一種情況,單機版的@Async就可以了,也不需要MQ和Redis
廢話不多說,直接上碼:
消費:
配合CommandLineRunner 直接實現開機監聽
blpop是redis的阻塞函數,也就是說沒有消息,就一直等待。
@Component public class StartupRunner implements CommandLineRunner { private Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private RedisUtil redisUtil; @Override public void run(String... args) throws Exception { logger.info("**************Application startup successful*************"); while (true){ String message= redisUtil.blpop("queueMessage"); logger.info("收到了隊列:{},的消息:{}","queueMessage",message); } } }
生產隊列消息:
lpush
@ApiOperation(value = "消息發送") @RequestMapping(value = "/pushMessage", method = RequestMethod.POST) public GeneralResponseDto pushMessage(@RequestParam("message") String message) throws IOException { redisUtil.lpush("queueMessage",message); return GeneralResponseDto.addSuccess("發送成功", message); }
測試:
發送了2次請求,寫入了2次
同學們有靈感了嗎,某些場景還是很方便的哦。