Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小五666\n哈哈
Rocketmq
提交
b13a4c86
R
Rocketmq
项目概览
小五666\n哈哈
/
Rocketmq
与 Fork 源项目一致
Fork自
Apache RocketMQ / Rocketmq
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rocketmq
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
b13a4c86
编写于
5月 27, 2021
作者:
H
huangli
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[ISSUE 2883] [Part G] Optimise parse performance for SendMessageRequestHeaderV2
上级
3183122c
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
70 addition
and
3 deletion
+70
-3
broker/src/main/java/org/apache/rocketmq/broker/processor/AbstractSendMessageProcessor.java
...cketmq/broker/processor/AbstractSendMessageProcessor.java
+70
-3
未找到文件。
broker/src/main/java/org/apache/rocketmq/broker/processor/AbstractSendMessageProcessor.java
浏览文件 @
b13a4c86
...
@@ -19,8 +19,10 @@ package org.apache.rocketmq.broker.processor;
...
@@ -19,8 +19,10 @@ package org.apache.rocketmq.broker.processor;
import
io.netty.channel.ChannelHandlerContext
;
import
io.netty.channel.ChannelHandlerContext
;
import
java.net.InetSocketAddress
;
import
java.net.InetSocketAddress
;
import
java.net.SocketAddress
;
import
java.net.SocketAddress
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.Random
;
import
java.util.Random
;
import
org.apache.rocketmq.broker.BrokerController
;
import
org.apache.rocketmq.broker.BrokerController
;
import
org.apache.rocketmq.broker.mqtrace.SendMessageContext
;
import
org.apache.rocketmq.broker.mqtrace.SendMessageContext
;
...
@@ -288,9 +290,7 @@ public abstract class AbstractSendMessageProcessor extends AsyncNettyRequestProc
...
@@ -288,9 +290,7 @@ public abstract class AbstractSendMessageProcessor extends AsyncNettyRequestProc
switch
(
request
.
getCode
())
{
switch
(
request
.
getCode
())
{
case
RequestCode
.
SEND_BATCH_MESSAGE
:
case
RequestCode
.
SEND_BATCH_MESSAGE
:
case
RequestCode
.
SEND_MESSAGE_V2
:
case
RequestCode
.
SEND_MESSAGE_V2
:
requestHeaderV2
=
requestHeaderV2
=
decodeSendMessageHeaderV2
(
request
);
(
SendMessageRequestHeaderV2
)
request
.
decodeCommandCustomHeader
(
SendMessageRequestHeaderV2
.
class
);
case
RequestCode
.
SEND_MESSAGE
:
case
RequestCode
.
SEND_MESSAGE
:
if
(
null
==
requestHeaderV2
)
{
if
(
null
==
requestHeaderV2
)
{
requestHeader
=
requestHeader
=
...
@@ -305,6 +305,73 @@ public abstract class AbstractSendMessageProcessor extends AsyncNettyRequestProc
...
@@ -305,6 +305,73 @@ public abstract class AbstractSendMessageProcessor extends AsyncNettyRequestProc
return
requestHeader
;
return
requestHeader
;
}
}
private
SendMessageRequestHeaderV2
decodeSendMessageHeaderV2
(
RemotingCommand
request
)
{
SendMessageRequestHeaderV2
r
=
new
SendMessageRequestHeaderV2
();
HashMap
<
String
,
String
>
fields
=
request
.
getExtFields
();
if
(
fields
==
null
)
{
// keep same behavior with CommandCustomHeader.decodeCommandCustomHeader
return
r
;
}
String
s
=
fields
.
get
(
"a"
);
Objects
.
requireNonNull
(
s
,
"the custom field <a> is null"
);
r
.
setA
(
s
);
s
=
fields
.
get
(
"b"
);
Objects
.
requireNonNull
(
s
,
"the custom field <b> is null"
);
r
.
setB
(
s
);
s
=
fields
.
get
(
"c"
);
Objects
.
requireNonNull
(
s
,
"the custom field <c> is null"
);
r
.
setC
(
s
);
s
=
fields
.
get
(
"d"
);
Objects
.
requireNonNull
(
s
,
"the custom field <d> is null"
);
r
.
setD
(
Integer
.
parseInt
(
s
));
s
=
fields
.
get
(
"e"
);
Objects
.
requireNonNull
(
s
,
"the custom field <e> is null"
);
r
.
setE
(
Integer
.
parseInt
(
s
));
s
=
fields
.
get
(
"f"
);
Objects
.
requireNonNull
(
s
,
"the custom field <f> is null"
);
r
.
setF
(
Integer
.
parseInt
(
s
));
s
=
fields
.
get
(
"g"
);
Objects
.
requireNonNull
(
s
,
"the custom field <g> is null"
);
r
.
setG
(
Long
.
parseLong
(
s
));
s
=
fields
.
get
(
"h"
);
Objects
.
requireNonNull
(
s
,
"the custom field <h> is null"
);
r
.
setH
(
Integer
.
parseInt
(
s
));
s
=
fields
.
get
(
"i"
);
if
(
s
!=
null
)
{
r
.
setI
(
s
);
}
s
=
fields
.
get
(
"j"
);
if
(
s
!=
null
)
{
r
.
setJ
(
Integer
.
parseInt
(
s
));
}
s
=
fields
.
get
(
"k"
);
if
(
s
!=
null
)
{
r
.
setK
(
Boolean
.
parseBoolean
(
s
));
}
s
=
fields
.
get
(
"l"
);
if
(
s
!=
null
)
{
r
.
setL
(
Integer
.
parseInt
(
s
));
}
s
=
fields
.
get
(
"m"
);
if
(
s
!=
null
)
{
r
.
setM
(
Boolean
.
parseBoolean
(
s
));
}
return
r
;
}
public
void
executeSendMessageHookAfter
(
final
RemotingCommand
response
,
final
SendMessageContext
context
)
{
public
void
executeSendMessageHookAfter
(
final
RemotingCommand
response
,
final
SendMessageContext
context
)
{
if
(
hasSendMessageHook
())
{
if
(
hasSendMessageHook
())
{
for
(
SendMessageHook
hook
:
this
.
sendMessageHookList
)
{
for
(
SendMessageHook
hook
:
this
.
sendMessageHookList
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录