Browse Source

发送消息 添加事务提交后再发送消息

master
jianjun 4 years ago
parent
commit
8060068710
  1. 2
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/send/SendMqMsgUtil.java
  2. 11
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java
  3. 10
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/StatsAchievementServiceImpl.java
  4. 11
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java
  5. 21
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java
  6. 12
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicDraftServiceImpl.java

2
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/send/SendMqMsgUtil.java

@ -50,7 +50,7 @@ public class SendMqMsgUtil {
systemMsgFormDTO.setMessageType(SystemMessageType.GROUP_ACHIEVEMENT); systemMsgFormDTO.setMessageType(SystemMessageType.GROUP_ACHIEVEMENT);
systemMsgFormDTO.setContent(msgContent); systemMsgFormDTO.setContent(msgContent);
Result sendMsgResult = null; Result sendMsgResult = null;
int retryTime = 1; int retryTime = 0;
do { do {
sendMsgResult = epmetMessageOpenFeignClient.sendSystemMsgByMQ(systemMsgFormDTO); sendMsgResult = epmetMessageOpenFeignClient.sendSystemMsgByMQ(systemMsgFormDTO);
} while ((sendMsgResult == null || !sendMsgResult.success()) && retryTime++ < NumConstant.TWO); } while ((sendMsgResult == null || !sendMsgResult.success()) && retryTime++ < NumConstant.TWO);

11
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java

@ -665,11 +665,20 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
epmetMessageOpenFeignClient.sendWxSubscribeMessage(msgList); epmetMessageOpenFeignClient.sendWxSubscribeMessage(msgList);
//发送小组成就消息 //发送小组成就消息
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@Override
public void afterCommit() {
try {
boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient) boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient)
.sendGroupAchievementMqMsg(new GroupAchievementMQMsg(resiGroupDTO.getCustomerId(),resiGroupDTO.getId(),AchievementTypeEnum.MEMBER.getCode())); .sendGroupAchievementMqMsg(new GroupAchievementMQMsg(resiGroupDTO.getCustomerId(), resiGroupDTO.getId(), AchievementTypeEnum.MEMBER.getCode()));
if (!flag) { if (!flag) {
logger.error("发送(小组成就)系统消息到message服务失败"); logger.error("发送(小组成就)系统消息到message服务失败");
} }
}catch (Exception e){
logger.error("afterCommit",e);
}
}
});
return new Result(); return new Result();
} }

10
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/StatsAchievementServiceImpl.java

@ -56,12 +56,12 @@ public class StatsAchievementServiceImpl extends AbstractStatsAchievementService
//计算所有类型的 小组人数、话题数、转议题数、小组内问题解决数 //计算所有类型的 小组人数、话题数、转议题数、小组内问题解决数
QueryWrapper<ResiGroupEntity> queryWrapper = new QueryWrapper<>(); QueryWrapper<ResiGroupEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(ResiGroupEntity::getDelFlag,'0'); queryWrapper.lambda().eq(ResiGroupEntity::getDelFlag, '0');
if (StringUtils.isNotBlank(customerId)){ if (StringUtils.isNotBlank(customerId)) {
queryWrapper.lambda().eq(ResiGroupEntity::getCustomerId,customerId); queryWrapper.lambda().eq(ResiGroupEntity::getCustomerId, customerId);
} }
List<ResiGroupEntity> groupEntities = resiGroupDao.selectList(queryWrapper); List<ResiGroupEntity> groupEntities = resiGroupDao.selectList(queryWrapper);
groupEntities.forEach(group->{ groupEntities.forEach(group -> {
AchievementTypeEnum[] achievementTypeEnum = AchievementTypeEnum.values(); AchievementTypeEnum[] achievementTypeEnum = AchievementTypeEnum.values();
for (AchievementTypeEnum anEnum : achievementTypeEnum) { for (AchievementTypeEnum anEnum : achievementTypeEnum) {
try { try {
@ -69,7 +69,7 @@ public class StatsAchievementServiceImpl extends AbstractStatsAchievementService
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} }
calculateAcm(group.getCustomerId(),group.getId(),anEnum.getCode()); calculateAcm(group.getCustomerId(), group.getId(), anEnum.getCode());
} }
}); });

11
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java

@ -86,6 +86,8 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronizationAdapter;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.text.DateFormat; import java.text.DateFormat;
@ -657,11 +659,20 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl<ResiGroupMemberD
List<WxSubscribeMessageFormDTO> msgList = new ArrayList<>(); List<WxSubscribeMessageFormDTO> msgList = new ArrayList<>();
msgList.add(wxSubscribeMessageFormDTO); msgList.add(wxSubscribeMessageFormDTO);
epmetMessageOpenFeignClient.sendWxSubscribeMessage(msgList); epmetMessageOpenFeignClient.sendWxSubscribeMessage(msgList);
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@Override
public void afterCommit() {
try {
//发送小组成就消息 //发送小组成就消息
boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendGroupAchievementMqMsg(new GroupAchievementMQMsg(resiGroupMemberDTO.getCustomerId(), resiGroupMemberDTO.getResiGroupId(), AchievementTypeEnum.MEMBER.getCode())); boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendGroupAchievementMqMsg(new GroupAchievementMQMsg(resiGroupMemberDTO.getCustomerId(), resiGroupMemberDTO.getResiGroupId(), AchievementTypeEnum.MEMBER.getCode()));
if (!flag) { if (!flag) {
logger.error("发送(小组成就)系统消息到message服务失败"); logger.error("发送(小组成就)系统消息到message服务失败");
} }
}catch (Exception e){
logger.error("afterCommit",e);
}
}
});
} }
/** /**

21
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java

@ -111,6 +111,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronizationAdapter;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@ -777,10 +779,19 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
log.error("组长解决话题事件发送失败,参数:{}",JSON.toJSONString(closeFormDTO)); log.error("组长解决话题事件发送失败,参数:{}",JSON.toJSONString(closeFormDTO));
} }
//发送小组成就消息 //发送小组成就消息
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@Override
public void afterCommit() {
try {
boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendGroupAchievementMqMsg(new GroupAchievementMQMsg(topic.getCustomerId(), topic.getGroupId(), AchievementTypeEnum.RESOVLE_TOPIC.getCode())); boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendGroupAchievementMqMsg(new GroupAchievementMQMsg(topic.getCustomerId(), topic.getGroupId(), AchievementTypeEnum.RESOVLE_TOPIC.getCode()));
if (!flag) { if (!flag) {
log.error("发送(小组成就)系统消息到message服务失败"); log.error("发送(小组成就)系统消息到message服务失败");
} }
}catch (Exception e){
logger.error("afterCommit",e);
}
}
});
} }
return new Result(); return new Result();
@ -1777,12 +1788,20 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
log.error("话题转议题事件发送失败,参数:{}",JSON.toJSONString(topicTurnIssueFromDTO)); log.error("话题转议题事件发送失败,参数:{}",JSON.toJSONString(topicTurnIssueFromDTO));
} }
//发送小组成就消息 //发送小组成就消息
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@Override
public void afterCommit() {
try {
boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendGroupAchievementMqMsg(new GroupAchievementMQMsg(group.getCustomerId(), group.getGroupId(), AchievementTypeEnum.TOISSUE.getCode())); boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendGroupAchievementMqMsg(new GroupAchievementMQMsg(group.getCustomerId(), group.getGroupId(), AchievementTypeEnum.TOISSUE.getCode()));
if (!flag) { if (!flag) {
log.error("发送(小组成就)系统消息到message服务失败"); log.error("发送(小组成就)系统消息到message服务失败");
} }
}catch (Exception e){
logger.error("afterCommit",e);
}
} }
else { });
} else {
ValidatorUtils.validateEntity(result, FirstTopicShiftedToIssueApplicationResultDTO.AllowAuditionGroup.class); ValidatorUtils.validateEntity(result, FirstTopicShiftedToIssueApplicationResultDTO.AllowAuditionGroup.class);
} }

12
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicDraftServiceImpl.java

@ -90,6 +90,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronizationAdapter;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
@ -981,11 +983,21 @@ public class TopicDraftServiceImpl extends BaseServiceImpl<TopicDraftDao, TopicD
} }
//发送小组成就消息 //发送小组成就消息
//发送小组成就消息
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@Override
public void afterCommit() {
try {
boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient) boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient)
.sendGroupAchievementMqMsg(new GroupAchievementMQMsg(customerId,groupId,AchievementTypeEnum.TOPIC.getCode())); .sendGroupAchievementMqMsg(new GroupAchievementMQMsg(customerId,groupId,AchievementTypeEnum.TOPIC.getCode()));
if (!flag) { if (!flag) {
log.error("发送(小组成就)系统消息到message服务失败"); log.error("发送(小组成就)系统消息到message服务失败");
} }
}catch (Exception e){
logger.error("afterCommit",e);
}
}
});
} }

Loading…
Cancel
Save