canal rocketMq动态topic无法匹配到topic

rdlzhqv9  于 2021-11-29  发布在  Java
关注(0)|答案(2)|浏览(496)

environment

mac

  • canal version
  • 1.5
  • mysql version 5.7

Issue Description

Steps to reproduce

Expected behaviour

Actual behaviour

public static boolean matchDynamicTopic(String name, String dynamicTopicConfigs) {
if (StringUtils.isEmpty(dynamicTopicConfigs)) {
return false;
}

boolean res = false;
    List<DynamicTopicData> datas = dynamicTopicDatas.get(dynamicTopicConfigs);
    for (DynamicTopicData data : datas) {
        if (data.simpleName != null) {
            if (data.simpleName.equalsIgnoreCase(name)) {
                res = true;
                break;
            }
        } else if (name.contains(".")) {
            if (data.tableRegexFilter != null && data.tableRegexFilter.filter(name)) {
                res = true;
                break;
            }
        } else {
            if (data.schemaRegexFilter != null && data.schemaRegexFilter.filter(name)) {
                res = true;
                break;
            }
        }
    }
    return res;
}

canal.mq.dynamicTopic=canal_tms_delivery_order_detail:tms_0.tms_delivery_order_detail_..*,canal_tms_delivery_order_settlement:tms_0.tms_delivery_order_settlement_..,canal_tms_delivery_order_logistics:tms_0.tms_delivery_order_logistics_..,canal_tms_delivery_order:tms_0.tms_delivery_order_..*

动态topic无法匹配:因为data.tableRegexFilter为空

2izufjch

2izufjch1#

canal.mq.dynamicTopic=canal_tms_delivery_order_detail:tms_0.tms_delivery_order_detail_..*,canal_tms_delivery_order_settlement:tms_0.tms_delivery_order_settlement_..,canal_tms_delivery_order_logistics:tms_0.tms_delivery_order_logistics_..,canal_tms_delivery_order:tms_0.tms_delivery_order_..* 这种也不行,我调试发现表达式多个.导致无法匹配

相关问题