org.apache.rocketmq.filter.FilterFactory Java Examples
The following examples show how to use
org.apache.rocketmq.filter.FilterFactory.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: ConsumerFilterManager.java From DDMQ with Apache License 2.0 | 5 votes |
/** * Build consumer filter data.Be care, bloom filter data is not included. * * @return maybe null */ public static ConsumerFilterData build(final String topic, final String consumerGroup, final String expression, final String type, final long clientVersion) { if (ExpressionType.isTagType(type)) { return null; } ConsumerFilterData consumerFilterData = new ConsumerFilterData(); consumerFilterData.setTopic(topic); consumerFilterData.setConsumerGroup(consumerGroup); consumerFilterData.setBornTime(System.currentTimeMillis()); consumerFilterData.setDeadTime(0); consumerFilterData.setExpression(expression); consumerFilterData.setExpressionType(type); consumerFilterData.setClientVersion(clientVersion); try { consumerFilterData.setCompiledExpression( FilterFactory.INSTANCE.get(type).compile(expression) ); } catch (Throwable e) { log.error("parse error: expr={}, topic={}, group={}, error={}", expression, topic, consumerGroup, e.getMessage()); return null; } return consumerFilterData; }
Example #2
Source File: ConsumerFilterManager.java From rocketmq with Apache License 2.0 | 5 votes |
/** * Build consumer filter data.Be care, bloom filter data is not included. * * @return maybe null */ public static ConsumerFilterData build(final String topic, final String consumerGroup, final String expression, final String type, final long clientVersion) { if (ExpressionType.isTagType(type)) { return null; } ConsumerFilterData consumerFilterData = new ConsumerFilterData(); consumerFilterData.setTopic(topic); consumerFilterData.setConsumerGroup(consumerGroup); consumerFilterData.setBornTime(System.currentTimeMillis()); consumerFilterData.setDeadTime(0); consumerFilterData.setExpression(expression); consumerFilterData.setExpressionType(type); consumerFilterData.setClientVersion(clientVersion); try { consumerFilterData.setCompiledExpression( FilterFactory.INSTANCE.get(type).compile(expression) ); } catch (Throwable e) { log.error("parse error: expr={}, topic={}, group={}, error={}", expression, topic, consumerGroup, e.getMessage()); return null; } return consumerFilterData; }
Example #3
Source File: ClientManageProcessor.java From rocketmq with Apache License 2.0 | 5 votes |
public RemotingCommand checkClientConfig(ChannelHandlerContext ctx, RemotingCommand request) throws RemotingCommandException { final RemotingCommand response = RemotingCommand.createResponseCommand(null); CheckClientRequestBody requestBody = CheckClientRequestBody.decode(request.getBody(), CheckClientRequestBody.class); if (requestBody != null && requestBody.getSubscriptionData() != null) { SubscriptionData subscriptionData = requestBody.getSubscriptionData(); if (ExpressionType.isTagType(subscriptionData.getExpressionType())) { response.setCode(ResponseCode.SUCCESS); response.setRemark(null); return response; } if (!this.brokerController.getBrokerConfig().isEnablePropertyFilter()) { response.setCode(ResponseCode.SYSTEM_ERROR); response.setRemark("The broker does not support consumer to filter message by " + subscriptionData.getExpressionType()); return response; } try { FilterFactory.INSTANCE.get(subscriptionData.getExpressionType()).compile(subscriptionData.getSubString()); } catch (Exception e) { log.warn("Client {}@{} filter message, but failed to compile expression! sub={}, error={}", requestBody.getClientId(), requestBody.getGroup(), requestBody.getSubscriptionData(), e.getMessage()); response.setCode(ResponseCode.SUBSCRIPTION_PARSE_FAILED); response.setRemark(e.getMessage()); return response; } } response.setCode(ResponseCode.SUCCESS); response.setRemark(null); return response; }
Example #4
Source File: ConsumerFilterManager.java From rocketmq-all-4.1.0-incubating with Apache License 2.0 | 5 votes |
/** * Build consumer filter data.Be care, bloom filter data is not included. * * @param topic * @param consumerGroup * @param expression * @param type * @param clientVersion * @return maybe null */ public static ConsumerFilterData build(final String topic, final String consumerGroup, final String expression, final String type, final long clientVersion) { if (ExpressionType.isTagType(type)) { return null; } ConsumerFilterData consumerFilterData = new ConsumerFilterData(); consumerFilterData.setTopic(topic); consumerFilterData.setConsumerGroup(consumerGroup); consumerFilterData.setBornTime(System.currentTimeMillis()); consumerFilterData.setDeadTime(0); consumerFilterData.setExpression(expression); consumerFilterData.setExpressionType(type); consumerFilterData.setClientVersion(clientVersion); try { consumerFilterData.setCompiledExpression( FilterFactory.INSTANCE.get(type).compile(expression) ); } catch (Throwable e) { log.error("parse error: expr={}, topic={}, group={}, error={}", expression, topic, consumerGroup, e.getMessage()); return null; } return consumerFilterData; }
Example #5
Source File: ClientManageProcessor.java From rocketmq-all-4.1.0-incubating with Apache License 2.0 | 5 votes |
public RemotingCommand checkClientConfig(ChannelHandlerContext ctx, RemotingCommand request) throws RemotingCommandException { final RemotingCommand response = RemotingCommand.createResponseCommand(null); CheckClientRequestBody requestBody = CheckClientRequestBody.decode(request.getBody(), CheckClientRequestBody.class); if (requestBody != null && requestBody.getSubscriptionData() != null) { SubscriptionData subscriptionData = requestBody.getSubscriptionData(); if (ExpressionType.isTagType(subscriptionData.getExpressionType())) { response.setCode(ResponseCode.SUCCESS); response.setRemark(null); return response; } if (!this.brokerController.getBrokerConfig().isEnablePropertyFilter()) { response.setCode(ResponseCode.SYSTEM_ERROR); response.setRemark("The broker does not support consumer to filter message by " + subscriptionData.getExpressionType()); return response; } try { FilterFactory.INSTANCE.get(subscriptionData.getExpressionType()).compile(subscriptionData.getSubString()); } catch (Exception e) { log.warn("Client {}@{} filter message, but failed to compile expression! sub={}, error={}", requestBody.getClientId(), requestBody.getGroup(), requestBody.getSubscriptionData(), e.getMessage()); response.setCode(ResponseCode.SUBSCRIPTION_PARSE_FAILED); response.setRemark(e.getMessage()); return response; } } response.setCode(ResponseCode.SUCCESS); response.setRemark(null); return response; }
Example #6
Source File: ConsumerFilterManager.java From DDMQ with Apache License 2.0 | 5 votes |
/** * Build consumer filter data.Be care, bloom filter data is not included. * * @return maybe null */ public static ConsumerFilterData build(final String topic, final String consumerGroup, final String expression, final String type, final long clientVersion) { if (ExpressionType.isTagType(type)) { return null; } ConsumerFilterData consumerFilterData = new ConsumerFilterData(); consumerFilterData.setTopic(topic); consumerFilterData.setConsumerGroup(consumerGroup); consumerFilterData.setBornTime(System.currentTimeMillis()); consumerFilterData.setDeadTime(0); consumerFilterData.setExpression(expression); consumerFilterData.setExpressionType(type); consumerFilterData.setClientVersion(clientVersion); try { consumerFilterData.setCompiledExpression( FilterFactory.INSTANCE.get(type).compile(expression) ); } catch (Throwable e) { log.error("parse error: expr={}, topic={}, group={}, error={}", expression, topic, consumerGroup, e.getMessage()); return null; } return consumerFilterData; }
Example #7
Source File: ClientManageProcessor.java From DDMQ with Apache License 2.0 | 5 votes |
public RemotingCommand checkClientConfig(ChannelHandlerContext ctx, RemotingCommand request) throws RemotingCommandException { final RemotingCommand response = RemotingCommand.createResponseCommand(null); CheckClientRequestBody requestBody = CheckClientRequestBody.decode(request.getBody(), CheckClientRequestBody.class); if (requestBody != null && requestBody.getSubscriptionData() != null) { SubscriptionData subscriptionData = requestBody.getSubscriptionData(); if (ExpressionType.isTagType(subscriptionData.getExpressionType())) { response.setCode(ResponseCode.SUCCESS); response.setRemark(null); return response; } if (!this.brokerController.getBrokerConfig().isEnablePropertyFilter()) { response.setCode(ResponseCode.SYSTEM_ERROR); response.setRemark("The broker does not support consumer to filter message by " + subscriptionData.getExpressionType()); return response; } try { FilterFactory.INSTANCE.get(subscriptionData.getExpressionType()).compile(subscriptionData.getSubString()); } catch (Exception e) { log.warn("Client {}@{} filter message, but failed to compile expression! sub={}, error={}", requestBody.getClientId(), requestBody.getGroup(), requestBody.getSubscriptionData(), e.getMessage()); response.setCode(ResponseCode.SUBSCRIPTION_PARSE_FAILED); response.setRemark(e.getMessage()); return response; } } response.setCode(ResponseCode.SUCCESS); response.setRemark(null); return response; }
Example #8
Source File: ConsumerFilterManager.java From rocketmq-read with Apache License 2.0 | 5 votes |
/** * Build consumer filter data.Be care, bloom filter data is not included. * * @return maybe null */ public static ConsumerFilterData build(final String topic, final String consumerGroup, final String expression, final String type, final long clientVersion) { if (ExpressionType.isTagType(type)) { return null; } ConsumerFilterData consumerFilterData = new ConsumerFilterData(); consumerFilterData.setTopic(topic); consumerFilterData.setConsumerGroup(consumerGroup); consumerFilterData.setBornTime(System.currentTimeMillis()); consumerFilterData.setDeadTime(0); consumerFilterData.setExpression(expression); consumerFilterData.setExpressionType(type); consumerFilterData.setClientVersion(clientVersion); try { consumerFilterData.setCompiledExpression( FilterFactory.INSTANCE.get(type).compile(expression) ); } catch (Throwable e) { log.error("parse error: expr={}, topic={}, group={}, error={}", expression, topic, consumerGroup, e.getMessage()); return null; } return consumerFilterData; }
Example #9
Source File: ConsumerFilterManager.java From rocketmq-4.3.0 with Apache License 2.0 | 5 votes |
/** * Build consumer filter data.Be care, bloom filter data is not included.构建消费者筛选数据。请注意,布鲁姆过滤数据不包括在内。 * * @return maybe null */ // public static ConsumerFilterData build(final String topic, final String consumerGroup, final String expression, final String type, final long clientVersion) { if (ExpressionType.isTagType(type)) { return null; } ConsumerFilterData consumerFilterData = new ConsumerFilterData(); consumerFilterData.setTopic(topic); consumerFilterData.setConsumerGroup(consumerGroup); consumerFilterData.setBornTime(System.currentTimeMillis()); consumerFilterData.setDeadTime(0); consumerFilterData.setExpression(expression); consumerFilterData.setExpressionType(type); consumerFilterData.setClientVersion(clientVersion); try { consumerFilterData.setCompiledExpression( FilterFactory.INSTANCE.get(type).compile(expression) ); } catch (Throwable e) { log.error("parse error: expr={}, topic={}, group={}, error={}", expression, topic, consumerGroup, e.getMessage()); return null; } return consumerFilterData; }
Example #10
Source File: ClientManageProcessor.java From rocketmq-4.3.0 with Apache License 2.0 | 5 votes |
public RemotingCommand checkClientConfig(ChannelHandlerContext ctx, RemotingCommand request) throws RemotingCommandException { final RemotingCommand response = RemotingCommand.createResponseCommand(null); CheckClientRequestBody requestBody = CheckClientRequestBody.decode(request.getBody(), CheckClientRequestBody.class); if (requestBody != null && requestBody.getSubscriptionData() != null) { SubscriptionData subscriptionData = requestBody.getSubscriptionData(); if (ExpressionType.isTagType(subscriptionData.getExpressionType())) { response.setCode(ResponseCode.SUCCESS); response.setRemark(null); return response; } if (!this.brokerController.getBrokerConfig().isEnablePropertyFilter()) { response.setCode(ResponseCode.SYSTEM_ERROR); response.setRemark("The broker does not support consumer to filter message by " + subscriptionData.getExpressionType()); return response; } try { FilterFactory.INSTANCE.get(subscriptionData.getExpressionType()).compile(subscriptionData.getSubString()); } catch (Exception e) { log.warn("Client {}@{} filter message, but failed to compile expression! sub={}, error={}", requestBody.getClientId(), requestBody.getGroup(), requestBody.getSubscriptionData(), e.getMessage()); response.setCode(ResponseCode.SUBSCRIPTION_PARSE_FAILED); response.setRemark(e.getMessage()); return response; } } response.setCode(ResponseCode.SUCCESS); response.setRemark(null); return response; }
Example #11
Source File: ClientManageProcessor.java From DDMQ with Apache License 2.0 | 5 votes |
public RemotingCommand checkClientConfig(ChannelHandlerContext ctx, RemotingCommand request) throws RemotingCommandException { final RemotingCommand response = RemotingCommand.createResponseCommand(null); CheckClientRequestBody requestBody = CheckClientRequestBody.decode(request.getBody(), CheckClientRequestBody.class); if (requestBody != null && requestBody.getSubscriptionData() != null) { SubscriptionData subscriptionData = requestBody.getSubscriptionData(); if (ExpressionType.isTagType(subscriptionData.getExpressionType())) { response.setCode(ResponseCode.SUCCESS); response.setRemark(null); return response; } if (!this.brokerController.getBrokerConfig().isEnablePropertyFilter()) { response.setCode(ResponseCode.SYSTEM_ERROR); response.setRemark("The broker does not support consumer to filter message by " + subscriptionData.getExpressionType()); return response; } try { FilterFactory.INSTANCE.get(subscriptionData.getExpressionType()).compile(subscriptionData.getSubString()); } catch (Exception e) { log.warn("Client {}@{} filter message, but failed to compile expression! sub={}, error={}", requestBody.getClientId(), requestBody.getGroup(), requestBody.getSubscriptionData(), e.getMessage()); response.setCode(ResponseCode.SUBSCRIPTION_PARSE_FAILED); response.setRemark(e.getMessage()); return response; } } response.setCode(ResponseCode.SUCCESS); response.setRemark(null); return response; }
Example #12
Source File: ConsumerFilterManager.java From rocketmq-read with Apache License 2.0 | 4 votes |
@Override public void decode(final String jsonString) { ConsumerFilterManager load = RemotingSerializable.fromJson(jsonString, ConsumerFilterManager.class); if (load != null && load.filterDataByTopic != null) { boolean bloomChanged = false; for (String topic : load.filterDataByTopic.keySet()) { FilterDataMapByTopic dataMapByTopic = load.filterDataByTopic.get(topic); if (dataMapByTopic == null) { continue; } for (String group : dataMapByTopic.getGroupFilterData().keySet()) { ConsumerFilterData filterData = dataMapByTopic.getGroupFilterData().get(group); if (filterData == null) { continue; } try { filterData.setCompiledExpression( FilterFactory.INSTANCE.get(filterData.getExpressionType()).compile(filterData.getExpression()) ); } catch (Exception e) { log.error("load filter data error, " + filterData, e); } // check whether bloom filter is changed // if changed, ignore the bit map calculated before. if (!this.bloomFilter.isValid(filterData.getBloomFilterData())) { bloomChanged = true; log.info("Bloom filter is changed!So ignore all filter data persisted! {}, {}", this.bloomFilter, filterData.getBloomFilterData()); break; } log.info("load exist consumer filter data: {}", filterData); if (filterData.getDeadTime() == 0) { // we think all consumers are dead when load long deadTime = System.currentTimeMillis() - 30 * 1000; filterData.setDeadTime( deadTime <= filterData.getBornTime() ? filterData.getBornTime() : deadTime ); } } } if (!bloomChanged) { this.filterDataByTopic = load.filterDataByTopic; } } }
Example #13
Source File: ClientManageProcessor.java From rocketmq-read with Apache License 2.0 | 4 votes |
/** * 检查客户端的配置 * @param ctx ctx * @param request request * @return ; * @throws RemotingCommandException ; */ public RemotingCommand checkClientConfig(ChannelHandlerContext ctx, RemotingCommand request) throws RemotingCommandException { final RemotingCommand response = RemotingCommand.createResponseCommand(null); CheckClientRequestBody requestBody = CheckClientRequestBody.decode(request.getBody(), CheckClientRequestBody.class); if (requestBody != null && requestBody.getSubscriptionData() != null) { SubscriptionData subscriptionData = requestBody.getSubscriptionData(); //如果是tagType,就返回成功 if (ExpressionType.isTagType(subscriptionData.getExpressionType())) { response.setCode(ResponseCode.SUCCESS); response.setRemark(null); return response; } //不是tagType,但是BrokerConfig不支持isEnablePropertyFilter,返回错误 if (!this.brokerController.getBrokerConfig().isEnablePropertyFilter()) { response.setCode(ResponseCode.SYSTEM_ERROR); response.setRemark("The broker does not support consumer to filter message by " + subscriptionData.getExpressionType()); return response; } //使用sql92的方式,看看能否编译subString ,那实际上subString其实就是sql92的比导师 try { FilterFactory.INSTANCE.get(subscriptionData.getExpressionType()).compile(subscriptionData.getSubString()); } catch (Exception e) { log.warn("Client {}@{} filter message, but failed to compile expression! sub={}, error={}", requestBody.getClientId(), requestBody.getGroup(), requestBody.getSubscriptionData(), e.getMessage()); response.setCode(ResponseCode.SUBSCRIPTION_PARSE_FAILED); response.setRemark(e.getMessage()); return response; } } response.setCode(ResponseCode.SUCCESS); response.setRemark(null); return response; }
Example #14
Source File: ConsumerFilterManager.java From rocketmq-4.3.0 with Apache License 2.0 | 4 votes |
@Override public void decode(final String jsonString) { ConsumerFilterManager load = RemotingSerializable.fromJson(jsonString, ConsumerFilterManager.class); if (load != null && load.filterDataByTopic != null) { boolean bloomChanged = false; for (String topic : load.filterDataByTopic.keySet()) { FilterDataMapByTopic dataMapByTopic = load.filterDataByTopic.get(topic); if (dataMapByTopic == null) { continue; } for (String group : dataMapByTopic.getGroupFilterData().keySet()) { ConsumerFilterData filterData = dataMapByTopic.getGroupFilterData().get(group); if (filterData == null) { continue; } try { filterData.setCompiledExpression( FilterFactory.INSTANCE.get(filterData.getExpressionType()).compile(filterData.getExpression()) ); } catch (Exception e) { log.error("load filter data error, " + filterData, e); } // check whether bloom filter is changed // if changed, ignore the bit map calculated before. if (!this.bloomFilter.isValid(filterData.getBloomFilterData())) { bloomChanged = true; log.info("Bloom filter is changed!So ignore all filter data persisted! {}, {}", this.bloomFilter, filterData.getBloomFilterData()); break; } log.info("load exist consumer filter data: {}", filterData); if (filterData.getDeadTime() == 0) { // we think all consumers are dead when load long deadTime = System.currentTimeMillis() - 30 * 1000; filterData.setDeadTime( deadTime <= filterData.getBornTime() ? filterData.getBornTime() : deadTime ); } } } if (!bloomChanged) { this.filterDataByTopic = load.filterDataByTopic; } } }
Example #15
Source File: ConsumerFilterManager.java From DDMQ with Apache License 2.0 | 4 votes |
@Override public void decode(final String jsonString) { ConsumerFilterManager load = RemotingSerializable.fromJson(jsonString, ConsumerFilterManager.class); if (load != null && load.filterDataByTopic != null) { boolean bloomChanged = false; for (String topic : load.filterDataByTopic.keySet()) { FilterDataMapByTopic dataMapByTopic = load.filterDataByTopic.get(topic); if (dataMapByTopic == null) { continue; } for (String group : dataMapByTopic.getGroupFilterData().keySet()) { ConsumerFilterData filterData = dataMapByTopic.getGroupFilterData().get(group); if (filterData == null) { continue; } try { filterData.setCompiledExpression( FilterFactory.INSTANCE.get(filterData.getExpressionType()).compile(filterData.getExpression()) ); } catch (Exception e) { log.error("load filter data error, " + filterData, e); } // check whether bloom filter is changed // if changed, ignore the bit map calculated before. if (!this.bloomFilter.isValid(filterData.getBloomFilterData())) { bloomChanged = true; log.info("Bloom filter is changed!So ignore all filter data persisted! {}, {}", this.bloomFilter, filterData.getBloomFilterData()); break; } log.info("load exist consumer filter data: {}", filterData); if (filterData.getDeadTime() == 0) { // we think all consumers are dead when load long deadTime = System.currentTimeMillis() - 30 * 1000; filterData.setDeadTime( deadTime <= filterData.getBornTime() ? filterData.getBornTime() : deadTime ); } } } if (!bloomChanged) { ServerUtil.updateMap(this.filterDataByTopic, load.filterDataByTopic); } } }
Example #16
Source File: ConsumerFilterManager.java From rocketmq-all-4.1.0-incubating with Apache License 2.0 | 4 votes |
@Override public void decode(final String jsonString) { ConsumerFilterManager load = RemotingSerializable.fromJson(jsonString, ConsumerFilterManager.class); if (load != null && load.filterDataByTopic != null) { boolean bloomChanged = false; for (String topic : load.filterDataByTopic.keySet()) { FilterDataMapByTopic dataMapByTopic = load.filterDataByTopic.get(topic); if (dataMapByTopic == null) { continue; } for (String group : dataMapByTopic.getGroupFilterData().keySet()) { ConsumerFilterData filterData = dataMapByTopic.getGroupFilterData().get(group); if (filterData == null) { continue; } try { filterData.setCompiledExpression( FilterFactory.INSTANCE.get(filterData.getExpressionType()).compile(filterData.getExpression()) ); } catch (Exception e) { log.error("load filter data error, " + filterData, e); } // check whether bloom filter is changed // if changed, ignore the bit map calculated before. if (!this.bloomFilter.isValid(filterData.getBloomFilterData())) { bloomChanged = true; log.info("Bloom filter is changed!So ignore all filter data persisted! {}, {}", this.bloomFilter, filterData.getBloomFilterData()); break; } log.info("load exist consumer filter data: {}", filterData); if (filterData.getDeadTime() == 0) { // we think all consumers are dead when load long deadTime = System.currentTimeMillis() - 30 * 1000; filterData.setDeadTime( deadTime <= filterData.getBornTime() ? filterData.getBornTime() : deadTime ); } } } if (!bloomChanged) { this.filterDataByTopic = load.filterDataByTopic; } } }
Example #17
Source File: ConsumerFilterManager.java From DDMQ with Apache License 2.0 | 4 votes |
@Override public void decode(final String jsonString) { ConsumerFilterManager load = RemotingSerializable.fromJson(jsonString, ConsumerFilterManager.class); if (load != null && load.filterDataByTopic != null) { boolean bloomChanged = false; for (String topic : load.filterDataByTopic.keySet()) { FilterDataMapByTopic dataMapByTopic = load.filterDataByTopic.get(topic); if (dataMapByTopic == null) { continue; } for (String group : dataMapByTopic.getGroupFilterData().keySet()) { ConsumerFilterData filterData = dataMapByTopic.getGroupFilterData().get(group); if (filterData == null) { continue; } try { filterData.setCompiledExpression( FilterFactory.INSTANCE.get(filterData.getExpressionType()).compile(filterData.getExpression()) ); } catch (Exception e) { log.error("load filter data error, " + filterData, e); } // check whether bloom filter is changed // if changed, ignore the bit map calculated before. if (!this.bloomFilter.isValid(filterData.getBloomFilterData())) { bloomChanged = true; log.info("Bloom filter is changed!So ignore all filter data persisted! {}, {}", this.bloomFilter, filterData.getBloomFilterData()); break; } log.info("load exist consumer filter data: {}", filterData); if (filterData.getDeadTime() == 0) { // we think all consumers are dead when load long deadTime = System.currentTimeMillis() - 30 * 1000; filterData.setDeadTime( deadTime <= filterData.getBornTime() ? filterData.getBornTime() : deadTime ); } } } if (!bloomChanged) { ServerUtil.updateMap(this.filterDataByTopic, load.filterDataByTopic); } } }
Example #18
Source File: ConsumerFilterManager.java From rocketmq with Apache License 2.0 | 4 votes |
@Override public void decode(final String jsonString) { ConsumerFilterManager load = RemotingSerializable.fromJson(jsonString, ConsumerFilterManager.class); if (load != null && load.filterDataByTopic != null) { boolean bloomChanged = false; for (String topic : load.filterDataByTopic.keySet()) { FilterDataMapByTopic dataMapByTopic = load.filterDataByTopic.get(topic); if (dataMapByTopic == null) { continue; } for (String group : dataMapByTopic.getGroupFilterData().keySet()) { ConsumerFilterData filterData = dataMapByTopic.getGroupFilterData().get(group); if (filterData == null) { continue; } try { filterData.setCompiledExpression( FilterFactory.INSTANCE.get(filterData.getExpressionType()).compile(filterData.getExpression()) ); } catch (Exception e) { log.error("load filter data error, " + filterData, e); } // check whether bloom filter is changed // if changed, ignore the bit map calculated before. if (!this.bloomFilter.isValid(filterData.getBloomFilterData())) { bloomChanged = true; log.info("Bloom filter is changed!So ignore all filter data persisted! {}, {}", this.bloomFilter, filterData.getBloomFilterData()); break; } log.info("load exist consumer filter data: {}", filterData); if (filterData.getDeadTime() == 0) { // we think all consumers are dead when load long deadTime = System.currentTimeMillis() - 30 * 1000; filterData.setDeadTime( deadTime <= filterData.getBornTime() ? filterData.getBornTime() : deadTime ); } } } if (!bloomChanged) { this.filterDataByTopic = load.filterDataByTopic; } } }