Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小五666\n哈哈
Rocketmq
提交
28a8d649
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看板
提交
28a8d649
编写于
2月 19, 2019
作者:
D
duhenglucky
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix the push subscription not update issue
上级
84bbb8f3
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
27 addition
and
8 deletion
+27
-8
common/src/main/java/org/apache/rocketmq/common/protocol/header/PushMessageHeader.java
...he/rocketmq/common/protocol/header/PushMessageHeader.java
+21
-0
snode/src/main/java/org/apache/rocketmq/snode/client/impl/SubscriptionManagerImpl.java
...e/rocketmq/snode/client/impl/SubscriptionManagerImpl.java
+2
-5
snode/src/main/java/org/apache/rocketmq/snode/service/impl/PushServiceImpl.java
...g/apache/rocketmq/snode/service/impl/PushServiceImpl.java
+4
-3
未找到文件。
common/src/main/java/org/apache/rocketmq/common/protocol/header/PushMessageHeader.java
浏览文件 @
28a8d649
...
...
@@ -36,6 +36,8 @@ public class PushMessageHeader implements CommandCustomHeader {
@CFNotNull
private
String
consumerGroup
;
private
String
enodeName
;
@Override
public
void
checkFields
()
throws
RemotingCommandException
{
...
...
@@ -80,4 +82,23 @@ public class PushMessageHeader implements CommandCustomHeader {
public
void
setConsumerGroup
(
String
consumerGroup
)
{
this
.
consumerGroup
=
consumerGroup
;
}
public
String
getEnodeName
()
{
return
enodeName
;
}
public
void
setEnodeName
(
String
enodeName
)
{
this
.
enodeName
=
enodeName
;
}
@Override
public
String
toString
()
{
return
"PushMessageHeader{"
+
"queueOffset="
+
queueOffset
+
", messageId='"
+
messageId
+
'\''
+
", queueId="
+
queueId
+
", topic='"
+
topic
+
'\''
+
", consumerGroup='"
+
consumerGroup
+
'\''
+
", enodeName='"
+
enodeName
+
'\''
+
'}'
;
}
}
snode/src/main/java/org/apache/rocketmq/snode/client/impl/SubscriptionManagerImpl.java
浏览文件 @
28a8d649
...
...
@@ -44,7 +44,6 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
@Override
public
void
registerPushSession
(
Set
<
SubscriptionData
>
subscriptionDataSet
,
RemotingChannel
remotingChannel
,
String
groupId
)
{
log
.
info
(
"Register push session subscriptionDataSet: {}"
,
subscriptionDataSet
);
Set
<
MessageQueue
>
prevSubSet
=
this
.
clientSubscriptionTable
.
get
(
remotingChannel
);
Set
<
MessageQueue
>
keySet
=
new
HashSet
<>();
for
(
SubscriptionData
subscriptionData
:
subscriptionDataSet
)
{
...
...
@@ -57,15 +56,14 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
Set
<
RemotingChannel
>
prev
=
pushTable
.
putIfAbsent
(
messageQueue
,
clientSet
);
clientSet
=
prev
!=
null
?
prev
:
clientSet
;
}
log
.
info
(
"Register push session message queue: {}, group: {} remoting: {}"
,
messageQueue
,
groupId
,
remotingChannel
.
remoteAddress
());
log
.
debug
(
"Register push session message queue: {}, group: {} remoting: {}"
,
messageQueue
,
groupId
,
remotingChannel
.
remoteAddress
());
clientSet
.
add
(
remotingChannel
);
}
}
}
if
(
keySet
.
size
()
>
0
)
{
this
.
clientSubscriptionTable
.
put
IfAbsent
(
remotingChannel
,
keySet
);
this
.
clientSubscriptionTable
.
put
(
remotingChannel
,
keySet
);
}
log
.
info
(
"Register push session clientSubscriptionTable: {}"
,
clientSubscriptionTable
);
if
(
prevSubSet
!=
null
)
{
for
(
MessageQueue
messageQueue
:
prevSubSet
)
{
if
(!
keySet
.
contains
(
messageQueue
))
{
...
...
@@ -77,7 +75,6 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
}
}
}
log
.
info
(
"Register push session clientSubscriptionTable: {}"
,
clientSubscriptionTable
);
}
@Override
...
...
snode/src/main/java/org/apache/rocketmq/snode/service/impl/PushServiceImpl.java
浏览文件 @
28a8d649
...
...
@@ -95,7 +95,7 @@ public class PushServiceImpl implements PushService {
messageExt
.
setFlag
(
sendMessageRequestHeader
.
getFlag
());
messageExt
.
setBody
(
message
);
messageExt
.
setBodyCRC
(
UtilAll
.
crc32
(
message
));
log
.
info
(
"MessageExt:{}"
,
messageExt
);
log
.
debug
(
"MessageExt:{}"
,
messageExt
);
return
messageExt
;
}
...
...
@@ -103,9 +103,9 @@ public class PushServiceImpl implements PushService {
public
void
run
()
{
if
(!
canceled
.
get
())
{
try
{
log
.
info
(
"sendMessageResponse:
{}"
,
sendMessageResponse
);
log
.
debug
(
"sendMessageResponse:
{}"
,
sendMessageResponse
);
SendMessageResponseHeader
sendMessageResponseHeader
=
(
SendMessageResponseHeader
)
sendMessageResponse
.
decodeCommandCustomHeader
(
SendMessageResponseHeader
.
class
);
log
.
info
(
"sendMessageResponseHeader:
{}"
,
sendMessageResponseHeader
);
log
.
debug
(
"sendMessageResponseHeader:
{}"
,
sendMessageResponseHeader
);
MessageQueue
messageQueue
=
new
MessageQueue
(
sendMessageRequestHeader
.
getTopic
(),
sendMessageRequestHeader
.
getEnodeName
(),
sendMessageRequestHeader
.
getQueueId
());
Set
<
RemotingChannel
>
consumerTable
=
snodeController
.
getSubscriptionManager
().
getPushableChannel
(
messageQueue
);
if
(
consumerTable
!=
null
)
{
...
...
@@ -113,6 +113,7 @@ public class PushServiceImpl implements PushService {
pushMessageHeader
.
setQueueOffset
(
sendMessageResponseHeader
.
getQueueOffset
());
pushMessageHeader
.
setTopic
(
sendMessageRequestHeader
.
getTopic
());
pushMessageHeader
.
setQueueId
(
sendMessageResponseHeader
.
getQueueId
());
pushMessageHeader
.
setEnodeName
(
sendMessageRequestHeader
.
getEnodeName
());
RemotingCommand
pushMessage
=
RemotingCommand
.
createRequestCommand
(
RequestCode
.
SNODE_PUSH_MESSAGE
,
pushMessageHeader
);
MessageExt
messageExt
=
buildMessageExt
(
sendMessageResponseHeader
,
message
,
sendMessageRequestHeader
);
pushMessage
.
setBody
(
MessageDecoder
.
encode
(
messageExt
,
false
));
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录