-
Notifications
You must be signed in to change notification settings - Fork 118
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Topic name is invalid when starting MySQL Source(CDC) Connector #518
Comments
@Ziy1-Tan Rocketmq does not support creating topics with special characters. You can use Transforms to reroute to a new topic |
遇到了同样的问题,对着源码看了半天,可能有理解不到位的地方,但是至少解决了创建主题这一步的问题,以下是解决方案: private String maybeCreateAndGetTopic(ConnectRecord record) {
String topic = overwriteTopicFromRecord(record);
topic = taskConfig.getString(SourceConnectorConfig.CONNECT_TOPICNAME);
// 这里把判断条件取消掉,直接从配置中获取主题名
// if (StringUtils.isBlank(topic)) {
// // topic from config
// topic = taskConfig.getString(SourceConnectorConfig.CONNECT_TOPICNAME);
// }
if (StringUtils.isBlank(topic)) {
throw new ConnectException("source connect lack of topic config");
}
if (!workerConfig.isAutoCreateTopicEnable() || topicCache.contains(topic)) {
return topic;
}
if (!ConnectUtil.isTopicExist(workerConfig, topic)) {
ConnectUtil.createTopic(workerConfig, new TopicConfig(topic));
}
topicCache.add(topic);
return topic;
}
```
这里前半部分`overwriteTopicFromRecord`方法没有细看,但是大概理解是将插入数据的 数据库服务名.数据库名.数据库表 名作为主题名,但是因为出现了`.`符号,所以至少在RocketMQ5.x版本会出现创建主题失败的问题,代码这里对于主题名的修改,在传入的配置参数中,优先级比`overwriteTopicFromRecord`方法生成的低,出现配置了"connect.topicname"但是没有生效的问题,不知道后续是否会优化。。。
----
Connect感觉是个比较有用的工具,但是文档中举例的demo,可能是限于个人水平,只运行成功了文件的同步的例子,在做其他demo的时候遇到不少问题,对着源码一点点打断点,也没能完全解决,由于时间原因,最后只能放弃使用。未来还是希望项目能够热度再高一些,维护得更好一些。 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I follow the RocketMQ Connect example1.
sh bin/connect-standalone.sh -c conf/connect-standalone.conf &
The source connector and task start successfully.
The Source task failed to create topic:
curl http://127.0.0.1:8082/connectors/list
The text was updated successfully, but these errors were encountered: