开发者社区> 问答> 正文

canal.serverMode 同时支持tcp和kafka么?

环境信息

canal version v1.1.3-alpha-2 mysql version v5.7.20 kafka version v1.0

问题描述

我启动了一个canal server , 用了adapter 同步Hbase,canal.serverMode配置的tcp,一切正常。

现在我需要另外传给kafka一份,能用同一个canal server么?还是必须重新部署个server?

我是这么做的,在canal.properties canal.instance.mq_test.serverMode = kafka canal.instance.mq_test.mq.servers = test-01:9092,test-02:9092 mq_test 是我建的一个用于kafka的instance.properties

求解惑,谢谢

原提问者GitHub用户alynnchen

展开
收起
古拉古拉 2023-05-08 13:44:12 118 0
2 条回答
写回答
取消 提交回答
  • 需要重新部署

    原回答者GitHub用户agapple

    2023-05-09 17:46:34
    赞同 展开评论 打赏
  • 随心分享,欢迎友善交流讨论:)

    根据您的描述,您需要将Canal Server同步的数据同时传输到TCP和Kafka两个不同的目的地。您可以通过在Canal Server的配置文件中使用多个canal.instance节点来实现这个目的。

    您可以为每个目的地配置单独的canal.instance节点,并为每个节点设置不同的参数值。例如,对于TCP目的地,您可以按照以下方式配置canal.instance节点:

    canal.instance.tcp_test.serverMode = tcp canal.instance.tcp_test.tcp.port = 11111 对于Kafka目的地,可以按照以下方式配置canal.instance节点:

    canal.instance.kafka_test.serverMode = kafka canal.instance.kafka_test.mq.servers = test-01:9092,test-02:9092 在这个例子中,我们为TCP和Kafka目的地各配置了一个canal.instance节点。您可以根据需要添加更多的节点,并为每个节点设置不同的参数值。

    接下来,您需要在Canal Server的配置文件中指定要使用的canal.instance节点。可以使用canal.instance.filter.regex参数来指定要包含的实例名称。例如:

    canal.instance.filter.regex = (tcp|kafka)_.* 在这个例子中,我们使用正则表达式指定了要包含的实例名称,可以匹配以tcp_和kafka_开头的实例名称。这样,Canal Server就会启动用于TCP和Kafka目的地的两个canal.instance节点,并将数据分别传输到这两个目的地中。

    可以根据您的需求,按照上述方式进行配置并部署Canal Server。

    2023-05-08 13:46:54
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第16讲】:Spring Boot 2.0 实战Apache Kafka百万级高并发消息中间件与原理解析 立即下载
MaxCompute技术公开课第四季 之 如何将Kafka数据同步至MaxCompute 立即下载
消息队列kafka介绍 立即下载