如何正确配置IBM MQ Sink Connector的Kafka Topic正则匹配规则
连接器正则表达式匹配Topic配置问题
问题场景
原连接器配置:
connectors: [ { taskMax: 6, ...... type: 'API', sourceTopic: 'A2_Source', destinationTopic: 'A3_Dest', isShadow: true, }, ],
为新增匹配的Topic,尝试改用正则表达式配置:
connectors: [ { taskMax: 6, ...... type: 'API', sourceTopicsRegex: ['A2_Source,(*_)_A4_Source'], destinationTopic: 'A3_Dest', isShadow: true, }, ],
预期匹配的Topic:
A2_Source PRD_XX_YY_A4_Source
但构建时系统仅将A2_Source,(*_)_A4_Source识别为普通字符串,无法实现正则匹配。
错误原因与修正方案
- 格式错误:
sourceTopicsRegex的数组元素需是独立的正则规则,不能把多个规则用逗号拼接成单个字符串。 - 正则语法错误:
(*_)是无效写法,匹配任意前缀应该用.*_(.匹配任意单个字符,*表示重复零次或多次)。
方案一:数组元素分别定义规则
这是最清晰的写法,每个规则对应一个数组元素:
connectors: [ { taskMax: 6, ...... type: 'API', sourceTopicsRegex: ['A2_Source', '.*_A4_Source'], destinationTopic: 'A3_Dest', isShadow: true, }, ],
'A2_Source':精确匹配该Topic名称'.*_A4_Source':匹配所有以_A4_Source结尾的Topic,比如PRD_XX_YY_A4_Source
方案二:单个正则表达式合并规则
如果想用一个正则同时匹配两种情况,可使用正则的或运算符|:
connectors: [ { taskMax: 6, ...... type: 'API', sourceTopicsRegex: ['A2_Source|.*_A4_Source'], destinationTopic: 'A3_Dest', isShadow: true, }, ],
这个正则会同时匹配A2_Source和符合xxx_A4_Source格式的Topic。
内容的提问来源于stack exchange,提问作者Achu
相关产品推荐
相关产品推荐

