Commit b437ed51 by Future

发消息性能优化

parent 74045943
...@@ -140,7 +140,6 @@ public class NormalChatAction { ...@@ -140,7 +140,6 @@ public class NormalChatAction {
return; return;
} }
} }
long time2 = System.currentTimeMillis();
if (ChatTypeEnum.NORMAL_GROUP.getCode().equals(conversation.getChatType())) { if (ChatTypeEnum.NORMAL_GROUP.getCode().equals(conversation.getChatType())) {
if (beKickOut(reqId, imClientSender, membersList, request.getSenderChannel())) { if (beKickOut(reqId, imClientSender, membersList, request.getSenderChannel())) {
return; return;
...@@ -156,7 +155,6 @@ public class NormalChatAction { ...@@ -156,7 +155,6 @@ public class NormalChatAction {
if (!checkMsg(imClientSender, conversation, reqId, data, request.getSenderChannel(), memberMap)) { if (!checkMsg(imClientSender, conversation, reqId, data, request.getSenderChannel(), memberMap)) {
return; return;
} }
log.info("会话id{} 校验耗时 {}", conversation.getId(), System.currentTimeMillis()-time2);
long time3 = System.currentTimeMillis(); long time3 = System.currentTimeMillis();
ImMessageOnlineSend imMessageOnlineSend = assembleImMessageOnlineSend(data, imClientSender, imApplication.getId()); ImMessageOnlineSend imMessageOnlineSend = assembleImMessageOnlineSend(data, imClientSender, imApplication.getId());
log.info("会话id{} 构造消息耗时 {}", conversation.getId(), System.currentTimeMillis()-time3); log.info("会话id{} 构造消息耗时 {}", conversation.getId(), System.currentTimeMillis()-time3);
...@@ -199,7 +197,7 @@ public class NormalChatAction { ...@@ -199,7 +197,7 @@ public class NormalChatAction {
}); });
} }
log.info("会话id{} 多线程发消息耗时 {}", conversation.getId(), System.currentTimeMillis()-time5); log.info("会话id{} 是否推送 {} 多线程发消息耗时 {}", conversation.getId(), isPush, System.currentTimeMillis()-time5);
// 响应发送方消息id等信息 // 响应发送方消息id等信息
response(reqId, imMessageOnlineSend, request.getSenderChannel()); response(reqId, imMessageOnlineSend, request.getSenderChannel());
} }
......
...@@ -58,7 +58,6 @@ import com.wecloud.im.ws.enums.WsResponseCmdEnum; ...@@ -58,7 +58,6 @@ import com.wecloud.im.ws.enums.WsResponseCmdEnum;
import com.wecloud.im.ws.model.WsResponse; import com.wecloud.im.ws.model.WsResponse;
import com.wecloud.im.ws.model.request.PushVO; import com.wecloud.im.ws.model.request.PushVO;
import com.wecloud.im.ws.sender.ChannelSender; import com.wecloud.im.ws.sender.ChannelSender;
import com.wecloud.im.ws.utils.RedisUtils;
import com.wecloud.pushserver.client.model.constant.MqConstant; import com.wecloud.pushserver.client.model.constant.MqConstant;
import com.wecloud.pushserver.client.model.dto.PushDTO; import com.wecloud.pushserver.client.model.dto.PushDTO;
import com.wecloud.utils.JsonUtils; import com.wecloud.utils.JsonUtils;
...@@ -618,13 +617,19 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes ...@@ -618,13 +617,19 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
// 入库 保存收件箱 // 入库 保存收件箱
batchSaveInbox(application, senderClientId, conversation, imMessageOnlineSend.getMsgId(), membersList); batchSaveInbox(application, senderClientId, conversation, imMessageOnlineSend.getMsgId(), membersList);
// 发送消息 // 发送消息
WsResponse<ImMessageOnlineSend> responseModel = new WsResponse<>();
responseModel.setCmd(WsResponseCmdEnum.ONLINE_MSG.getCmdCode());
responseModel.setCode(200);
responseModel.setMsg(null);
responseModel.setData(imMessageOnlineSend);
responseModel.setReqId(null);
for (ImConversationMembers members : membersList) { for (ImConversationMembers members : membersList) {
if (members.getClientId().equals(senderClientId) && !param.getIncludeSender()) { if (members.getClientId().equals(senderClientId) && !param.getIncludeSender()) {
// 是否是发送者 且includeSender不为true // 是否是发送者 且includeSender不为true
continue; continue;
} }
// 在线用户直接发消息 // 在线用户直接发消息
Boolean sendResult = sendMsgForOnline(members.getFkClientId(), imMessageOnlineSend); sendMsgForOnline(members.getFkClientId(), responseModel);
// 离线消息推送 // 离线消息推送
pushMsgToOfflineMembers(application, members, param.getPushContent(), param.getPushExt()); pushMsgToOfflineMembers(application, members, param.getPushContent(), param.getPushExt());
} }
...@@ -720,13 +725,19 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes ...@@ -720,13 +725,19 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
ImMessageOnlineSend imMessageOnlineSend = assembleImMessageOnlineSend(message, sender, appId); ImMessageOnlineSend imMessageOnlineSend = assembleImMessageOnlineSend(message, sender, appId);
// 发送消息 // 发送消息
WsResponse<ImMessageOnlineSend> responseModel = new WsResponse<>();
responseModel.setCmd(WsResponseCmdEnum.ONLINE_MSG.getCmdCode());
responseModel.setCode(200);
responseModel.setMsg(null);
responseModel.setData(imMessageOnlineSend);
responseModel.setReqId(null);
for (ImConversationMembers members : membersList) { for (ImConversationMembers members : membersList) {
if (members.getClientId().equals(senderClientId) && !param.getIncludeSender()) { if (members.getClientId().equals(senderClientId) && !param.getIncludeSender()) {
// 是否是发送者 且includeSender不为true // 是否是发送者 且includeSender不为true
continue; continue;
} }
// 在线用户直接发消息 // 在线用户直接发消息
sendMsgForOnline(members.getFkClientId(), imMessageOnlineSend); sendMsgForOnline(members.getFkClientId(), responseModel);
} }
} }
return true; return true;
...@@ -771,7 +782,13 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes ...@@ -771,7 +782,13 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
saveImInbox(application, conversation.getId(), imMessageOnlineSend.getMsgId(), saveImInbox(application, conversation.getId(), imMessageOnlineSend.getMsgId(),
members, SnowflakeUtil.getId()); members, SnowflakeUtil.getId());
// 在线用户直接发消息 // 在线用户直接发消息
Boolean sendResult = sendMsgForOnline(members.getFkClientId(), imMessageOnlineSend); WsResponse<ImMessageOnlineSend> responseModel = new WsResponse<>();
responseModel.setCmd(WsResponseCmdEnum.ONLINE_MSG.getCmdCode());
responseModel.setCode(200);
responseModel.setMsg(null);
responseModel.setData(imMessageOnlineSend);
responseModel.setReqId(null);
sendMsgForOnline(members.getFkClientId(), responseModel);
// 离线消息推送 // 离线消息推送
pushMsgToOfflineMembers(application, members, param.getPushContent(), param.getPushExt()); pushMsgToOfflineMembers(application, members, param.getPushContent(), param.getPushExt());
} }
...@@ -816,7 +833,13 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes ...@@ -816,7 +833,13 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
} }
// log.info("下发消息 clientId: {} 消息内容: {}", members.getFkClientId(), JSON.toJSONString(imMessageOnlineSend)); // log.info("下发消息 clientId: {} 消息内容: {}", members.getFkClientId(), JSON.toJSONString(imMessageOnlineSend));
// 在线用户直接发消息 // 在线用户直接发消息
sendMsgForOnline(members.getFkClientId(), imMessageOnlineSend); WsResponse<ImMessageOnlineSend> responseModel = new WsResponse<>();
responseModel.setCmd(WsResponseCmdEnum.ONLINE_MSG.getCmdCode());
responseModel.setCode(200);
responseModel.setMsg(null);
responseModel.setData(imMessageOnlineSend);
responseModel.setReqId(null);
sendMsgForOnline(members.getFkClientId(), responseModel);
} }
}); });
...@@ -871,7 +894,13 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes ...@@ -871,7 +894,13 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
members, SnowflakeUtil.getId()); members, SnowflakeUtil.getId());
// 在线用户直接发消息 // 在线用户直接发消息
Boolean sendResult = sendMsgForOnline(members.getFkClientId(), imMessageOnlineSend); WsResponse<ImMessageOnlineSend> responseModel = new WsResponse<>();
responseModel.setCmd(WsResponseCmdEnum.ONLINE_MSG.getCmdCode());
responseModel.setCode(200);
responseModel.setMsg(null);
responseModel.setData(imMessageOnlineSend);
responseModel.setReqId(null);
sendMsgForOnline(members.getFkClientId(), responseModel);
pushMsgToOfflineMembers(application, members, param.getPushContent(), param.getPushExt()); pushMsgToOfflineMembers(application, members, param.getPushContent(), param.getPushExt());
} }
...@@ -1118,17 +1147,9 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes ...@@ -1118,17 +1147,9 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
* 发送消息给在线客户 * 发送消息给在线客户
* *
* @param receiverClientId * @param receiverClientId
* @param imMessageOnlineSend * @param responseModel
*/ */
private Boolean sendMsgForOnline(Long receiverClientId, ImMessageOnlineSend imMessageOnlineSend) { private Boolean sendMsgForOnline(Long receiverClientId, WsResponse<ImMessageOnlineSend> responseModel) {
// 封装要推给接收方的消息
WsResponse<ImMessageOnlineSend> responseModel = new WsResponse<>();
responseModel.setCmd(WsResponseCmdEnum.ONLINE_MSG.getCmdCode());
ApiResult<Boolean> result = ApiResult.result(ApiCode.SUCCESS);
responseModel.setCode(result.getCode());
responseModel.setMsg(result.getMessage());
responseModel.setData(imMessageOnlineSend);
responseModel.setReqId(null);
return channelSender.sendMsg(responseModel, receiverClientId); return channelSender.sendMsg(responseModel, receiverClientId);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment