Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wecloud_im_server
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
hewei
wecloud_im_server
Commits
b437ed51
Commit
b437ed51
authored
Nov 16, 2022
by
Future
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
发消息性能优化
parent
74045943
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
38 additions
and
19 deletions
+38
-19
core/src/main/java/com/wecloud/im/action/NormalChatAction.java
+1
-3
core/src/main/java/com/wecloud/im/service/impl/ImMessageServiceImpl.java
+37
-16
No files found.
core/src/main/java/com/wecloud/im/action/NormalChatAction.java
View file @
b437ed51
...
@@ -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
());
}
}
...
...
core/src/main/java/com/wecloud/im/service/impl/ImMessageServiceImpl.java
View file @
b437ed51
...
@@ -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
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment