C/C++教程

全站最硬核 百万字强肝RocketMq源码 火热更新中~(四十二)

本文主要是介绍全站最硬核 百万字强肝RocketMq源码 火热更新中~(四十二),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

如果资源路径包含namesapce,那么把namespace去掉

public static String wrapNamespace(String namespace, String resourceWithOutNamespace) {

当然也有反向的,除了去掉resource中的namespace外,还有给resource包上namespace

if (isRetryTopic(resourceWithOutNamespace)) {
    stringBuilder.append(MixAll.RETRY_GROUP_TOPIC_PREFIX);
}

if (isDLQTopic(resourceWithOutNamespace)) {
    stringBuilder.append(MixAll.DLQ_GROUP_TOPIC_PREFIX);
}

return stringBuilder.append(namespace).append(NAMESPACE_SEPARATOR).append(resourceWithoutRetryAndDLQ).toString();

基本是一样的,这里也可以看出来,Topic分RetryTopic,DLQTopic两大类

且namespace是以 % 做分割的

public static final String RETRY_GROUP_TOPIC_PREFIX = "%RETRY%";
public static final String DLQ_GROUP_TOPIC_PREFIX = "%DLQ%";

从MixAll工具类里,这一点也得到应征。

还有RetryTopic DLQTopic的判断方式:

public static boolean isRetryTopic(String resource) {
    return StringUtils.isNotBlank(resource) && resource.startsWith(MixAll.RETRY_GROUP_TOPIC_PREFIX);
}

public static boolean isDLQTopic(String resource) {
    return StringUtils.isNotBlank(resource) && resource.startsWith(MixAll.DLQ_GROUP_TOPIC_PREFIX);
}

也就是该resource资源路径是

以RetryTopic 或者DLQTopic

开头的。

总结下namesapceutil

org.apache.rocketmq.common.protocol.NamespaceUtil

这个工具类,

它围绕namespace

提供了很多拼接,以及拆分的方法

比如把 资源路径中的 namespace 去掉

或者给 资源路径 包上namespace

回到ClientConfig类

public Set<String> withNamespace(Set<String> resourceSet) {
    Set<String> resourceWithNamespace = new HashSet<String>();
    for (String resource : resourceSet) {
        resourceWithNamespace.add(withNamespace(resource));
    }
    return resourceWithNamespace;
}

public String withoutNamespace(String resource) {
    return NamespaceUtil.withoutNamespace(resource, this.getNamespace());
}

public Set<String> withoutNamespace(Set<String> resourceSet) {
    Set<String> resourceWithoutNamespace = new HashSet<String>();
    for (String resource : resourceSet) {
        resourceWithoutNamespace.add(withoutNamespace(resource));
    }
    return resourceWithoutNamespace;
}
这篇关于全站最硬核 百万字强肝RocketMq源码 火热更新中~(四十二)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!