说明
这个类是用来形容要订阅什么样的消息数据, 并不是真正的被订阅的数据
方法很简单,讲字段就够了
字段
public final static String SUB_ALL = "*";//订阅所有
private boolean classFilterMode = false;//Consumer端过滤相关的,用户自定义过滤类时才会用
private String topic;
private String subString;//订阅的标示,如expressionType默认TAG时,这里可以填写"A||B"
private Set<String> tagsSet = new HashSet<String>();//topic下订阅的标签tag
private Set<Integer> codeSet = new HashSet<Integer>();//每个tag对应的hashCode
private long subVersion = System.currentTimeMillis();//版本,通过时间来实现
/**
* TAG或SQL92,参照ExpressionType类
* 默认null也是当成TAG来处理,参照 ExpressionType#isTagType(java.lang.String)
*/
private String expressionType;
@JSONField(serialize = false)
private String filterClassSource;//Consumer端过滤相关的,用户自定义过滤类时才会用
说明:
1.filterClassSource和classFilterMode是consumer端过滤相关的,这里不深入,可以参照refer大致了解
2.expressionType分为TAG或SQL92(默认null的处理方式也是TAG),关于SQL92的解析,处理并不详细展开,可以参照SelectorParser进行阅读
问题
这个类涉及一些消息过滤,目前还不是非常了解,了解完了再来这里补充
refer
https://fdx321.github.io/tags/RocketMQ/
《开发手册3.2.4》中
4.4 Message Filter
7.4 服务器消息过滤
8 rocketmq消息过滤
网友评论