今天在小组codereview的时候,被大佬们揪出来我的程序写的拉的一点,分享出来,部分代码涉及内部机密,我用注释尽量描述清楚
场景
我是一个对话场景,需要对群会话加锁,然后去自动回复的,也就是说,我需要在消息进来的时候,不能让同一个群的所有人触发我这个自动回复的规则,只有在拿到锁的执行完自动回复解锁之后,在进行加锁/解锁
代码
//判断需要加锁
boolean lockFlag = judgeLock(chatMsgDO.getChatType(),autoReplyRuleDO);
if (lockFlag){
//群聊消息处理
//会话id + 规则主键ID
String key = RedisKeyConstant.genAutoReplyKey(chatMsgDO.getBindId(),autoReplyRuleDO.getId());
try{
redisService.lockWithExpireTimeAndRetryTimes(key, 60, 5);
}catch (Exception e){
log.info("[关键词自动回复(群聊)]加锁失败,{}微信不处理",chatMsgDO.getReceiverId());
}
//直接保证只有一个托管微信进行同一个消息内容的自动回复
//判断群聊回复时是否需要@
boolean mentionSwitch = judgeNeedMention(autoReplyRuleDO);
if (mentionSwitch ==