|
17 | 17 | package org.apache.rocketmq.client.consumer; |
18 | 18 |
|
19 | 19 | import java.util.Collection; |
| 20 | +import java.util.HashSet; |
20 | 21 | import java.util.List; |
21 | 22 | import java.util.Map; |
22 | 23 | import java.util.Set; |
|
33 | 34 | import org.apache.rocketmq.common.consumer.ConsumeFromWhere; |
34 | 35 | import org.apache.rocketmq.common.message.MessageExt; |
35 | 36 | import org.apache.rocketmq.common.message.MessageQueue; |
| 37 | +import org.apache.rocketmq.logging.org.slf4j.Logger; |
| 38 | +import org.apache.rocketmq.logging.org.slf4j.LoggerFactory; |
36 | 39 | import org.apache.rocketmq.remoting.RPCHook; |
37 | 40 | import org.apache.rocketmq.remoting.protocol.NamespaceUtil; |
| 41 | +import org.apache.rocketmq.remoting.protocol.filter.FilterAPI; |
38 | 42 | import org.apache.rocketmq.remoting.protocol.heartbeat.MessageModel; |
39 | | -import org.apache.rocketmq.logging.org.slf4j.Logger; |
40 | | -import org.apache.rocketmq.logging.org.slf4j.LoggerFactory; |
| 43 | +import org.apache.rocketmq.remoting.protocol.heartbeat.SubscriptionData; |
41 | 44 |
|
42 | 45 | import static org.apache.rocketmq.remoting.protocol.heartbeat.SubscriptionData.SUB_ALL; |
43 | 46 |
|
@@ -171,6 +174,8 @@ public class DefaultLitePullConsumer extends ClientConfig implements LitePullCon |
171 | 174 |
|
172 | 175 | private RPCHook rpcHook; |
173 | 176 |
|
| 177 | + private final Set<SubscriptionData> subscriptionsForHeartbeat = new HashSet<>(); |
| 178 | + |
174 | 179 | /** |
175 | 180 | * Default constructor. |
176 | 181 | */ |
@@ -618,4 +623,17 @@ public boolean isEnableMsgTrace() { |
618 | 623 | public void setEnableMsgTrace(boolean enableMsgTrace) { |
619 | 624 | this.enableTrace = enableMsgTrace; |
620 | 625 | } |
| 626 | + |
| 627 | + public Set<SubscriptionData> getSubscriptionsForHeartbeat() { |
| 628 | + return this.subscriptionsForHeartbeat; |
| 629 | + } |
| 630 | + |
| 631 | + public synchronized void buildSubscriptionsForHeartbeat(Map<String, MessageSelector> messageSelectorMap) throws Exception { |
| 632 | + this.subscriptionsForHeartbeat.clear(); |
| 633 | + for (Map.Entry<String, MessageSelector> entry : messageSelectorMap.entrySet()) { |
| 634 | + SubscriptionData subscriptionData = FilterAPI.build(entry.getKey(), |
| 635 | + entry.getValue().getExpression(), entry.getValue().getExpressionType()); |
| 636 | + this.subscriptionsForHeartbeat.add(subscriptionData); |
| 637 | + } |
| 638 | + } |
621 | 639 | } |
0 commit comments