java redis 短信业务应用
短信业务场景:根据实际业务来通知客户,在短信的MQ中新增字段:是否需要发送短信的标识,短信微服务可以接收到MQ后根据该字段来判断是否发送。
如果发送端MQ的事件的操作是分开的,比如步骤1:修改订单, 步骤2:产生修改后的费用去支付,在支付成功之后才发送该MQ消息。 如果在步骤2的发送MQ的字段中,需要步骤1的字段, 有两种方法: 1:查询步骤1 落库的数据,在步骤2的时候查询出来。 2:如果第一步查询并且仍然需要比较复杂的逻辑处理,可以将步骤1的 逻辑后的数据直接放到redis中,根据唯一标识来作为key,这样在步骤2直接从redis中获取。
代码语言:javascript复制//send
stringRedisTemplate.opsForValue().set(redisKey, "1",30, TimeUnit.MINUTES);
//receive
String strFlag = "0";
String redisKey = myRedisKeyTest renterOrderNo;
if(stringRedisTemplate.hasKey(redisKey)) {
strFlag = stringRedisTemplate.opsForValue().get(redisKey);
}
//other:
//注册用户的MQ >> 会员注册微服务
rabbitTemplate.convertAndSend(RabbitConstants.EXCHANGE_CREATE_MEMBER,RabbitConstants.ROUTING_KEY_CREATE_MEMBER,JsonUtil.toJson(createMemDto));
//从redis中获取注册后的结果
String regNo = redisTemplate.opsForList().leftPop("member:regNo:mobile:" createMemDto.getMobile(), 5000, TimeUnit.MILLISECONDS);