|
|
@ -78,10 +78,16 @@ public class ProjectChangedCustomListener implements MessageListenerConcurrently |
|
|
|
|
|
|
|
String redisKey = RedisKeys.getProjectChangedMsgDistinceKey(msgObj.getCustomerId()); |
|
|
|
if (redisUtils.get(redisKey) == null) { |
|
|
|
consumeMessage(msgObj); |
|
|
|
log.info("消费了项目变动消息,customer id:{}", msgObj.getCustomerId()); |
|
|
|
// 有效期30秒
|
|
|
|
// 该线程启动消费之后,其他线程再收到该客户id的消费请求,则不消费
|
|
|
|
redisUtils.set(redisKey, msg, 30); |
|
|
|
try { |
|
|
|
consumeMessage(msgObj); |
|
|
|
} catch (Exception e) { |
|
|
|
// 如果消费失败了,清楚该key,收到消息之后可以继续消费
|
|
|
|
redisUtils.delete(redisKey); |
|
|
|
throw e; |
|
|
|
} |
|
|
|
log.info("消费了项目变动消息,customer id:{}", msgObj.getCustomerId()); |
|
|
|
} else { |
|
|
|
log.info("该客户的项目变动消息刚刚消费,请等待30秒,customer id:{}", msgObj.getCustomerId()); |
|
|
|
} |
|
|
|