Commit b437ed51 by Future

发消息性能优化

parent 74045943
......@@ -140,7 +140,6 @@ public class NormalChatAction {
return;
}
}
long time2 = System.currentTimeMillis();
if (ChatTypeEnum.NORMAL_GROUP.getCode().equals(conversation.getChatType())) {
if (beKickOut(reqId, imClientSender, membersList, request.getSenderChannel())) {
return;
......@@ -156,7 +155,6 @@ public class NormalChatAction {
if (!checkMsg(imClientSender, conversation, reqId, data, request.getSenderChannel(), memberMap)) {
return;
}
log.info("会话id{} 校验耗时 {}", conversation.getId(), System.currentTimeMillis()-time2);
long time3 = System.currentTimeMillis();
ImMessageOnlineSend imMessageOnlineSend = assembleImMessageOnlineSend(data, imClientSender, imApplication.getId());
log.info("会话id{} 构造消息耗时 {}", conversation.getId(), System.currentTimeMillis()-time3);
......@@ -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等信息
response(reqId, imMessageOnlineSend, request.getSenderChannel());
}
......
......@@ -58,7 +58,6 @@ import com.wecloud.im.ws.enums.WsResponseCmdEnum;
import com.wecloud.im.ws.model.WsResponse;
import com.wecloud.im.ws.model.request.PushVO;
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.dto.PushDTO;
import com.wecloud.utils.JsonUtils;
......@@ -618,13 +617,19 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
// 入库 保存收件箱
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) {
if (members.getClientId().equals(senderClientId) && !param.getIncludeSender()) {
// 是否是发送者 且includeSender不为true
continue;
}
// 在线用户直接发消息
Boolean sendResult = sendMsgForOnline(members.getFkClientId(), imMessageOnlineSend);
sendMsgForOnline(members.getFkClientId(), responseModel);
// 离线消息推送
pushMsgToOfflineMembers(application, members, param.getPushContent(), param.getPushExt());
}
......@@ -720,13 +725,19 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
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) {
if (members.getClientId().equals(senderClientId) && !param.getIncludeSender()) {
// 是否是发送者 且includeSender不为true
continue;
}
// 在线用户直接发消息
sendMsgForOnline(members.getFkClientId(), imMessageOnlineSend);
sendMsgForOnline(members.getFkClientId(), responseModel);
}
}
return true;
......@@ -771,7 +782,13 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
saveImInbox(application, conversation.getId(), imMessageOnlineSend.getMsgId(),
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());
}
......@@ -816,7 +833,13 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
}
// 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
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());
}
......@@ -1118,17 +1147,9 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
* 发送消息给在线客户
*
* @param receiverClientId
* @param imMessageOnlineSend
* @param responseModel
*/
private Boolean sendMsgForOnline(Long receiverClientId, ImMessageOnlineSend imMessageOnlineSend) {
// 封装要推给接收方的消息
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);
private Boolean sendMsgForOnline(Long receiverClientId, WsResponse<ImMessageOnlineSend> responseModel) {
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