RocketMQ支持按标签过滤,其中我深入研究了代理的源代码。代理似乎做了以下比较:org.apache.rocketmq.broker.filter.ExpressionMessageFilter#isMatchedByConsumeQueue中的subscriptionData.getCodeSet().contains(tagsCode.intValue());。所以我想知道是否有可能两个标签有相同的哈希码,如果发生这种情况,一些消息将不会被过滤?我在Broker中找不到任何比较实际标记字符串的代码,我是不是遗漏了什么?
附言:我的RocketMQ版本是:4.2.0-孵化-快照
发布于 2018-08-22 03:18:43
整数的哈希码是它自己(source),所以tagsCode.intValue()的哈希码就是它自己。因此,只要每个代码在一开始就有一个唯一的int值,就不会有哈希码冲突。
https://stackoverflow.com/questions/47280322
复制相似问题