我想使用源码启动canal + RocketMQ

4ngedf3f  于 5个月前  发布在  其他
关注(0)|答案(9)|浏览(50)

tcp 模式已经跑通了。改成RocketMQ后

loader无法加载 RocketMQProducer , 如下图 报错. Extension instance(name: rocketmq, class: interface com.alibaba.otter.canal.connector.core.spi.CanalMQProducer) could not be instantiated: class could not be found
想咨询一下,还需要如何配置IDEA 才能正常启动?

w8f9ii69

w8f9ii691#

我把这里注释掉就ok了

iyr7buue

iyr7buue2#

mq模式下性能是不是比tcp要好

ergxz8rk

ergxz8rk3#

mq模式下性能是不是比tcp要好

只能说扩展性比较好吧,因为tcp是当前线程直接去获取binlog

导入到mq中的话

  1. 如果binlog的数据量比较大,那可以弹性扩容consumer 加速消费
  2. 如果依赖binlog的下游比较多,比如注册用户后 需要发优惠券或者发积分,那多几个消费者订阅同一个topic就可以解耦了。不需要修改tcp的监听代码。
eqoofvh9

eqoofvh94#

mq模式下性能是不是比tcp要好

只能说扩展性比较好吧,因为tcp是当前线程直接去获取binlog

导入到mq中的话

  1. 如果binlog的数据量比较大,那可以弹性扩容consumer 加速消费
  2. 如果依赖binlog的下游比较多,比如注册用户后 需要发优惠券或者发积分,那多几个消费者订阅同一个topic就可以解耦了。不需要修改tcp的监听代码。

我测试发现使用tcp模式性能好差 导个10w条数据要好久 如果使用mq的模式 那从mq到es这块是不是需要自己来实现了

ogsagwnx

ogsagwnx5#

好久是多久? 源码这里的实现也是先从canal中获取数据,再发送给RocketMQ.
可以调整下 getWithoutAck 的参数 batchSize, 1000试试。 使用RocketMQ主要是为了削峰,因为线上环境也不可能24小时不停的变更,业务总有低谷。如果高峰期来不及消费,扔到MQ中也可以在低估期慢慢消费。

mlnl4t2r

mlnl4t2r6#

好久是多久? 源码这里的实现也是先从canal中获取数据,再发送给RocketMQ. 可以调整下 getWithoutAck 的参数 batchSize, 1000试试。 使用RocketMQ主要是为了削峰,因为线上环境也不可能24小时不停的变更,业务总有低谷。如果高峰期来不及消费,扔到MQ中也可以在低估期慢慢消费。

老哥 方便加下v吗 jccccccc 好像下划线没显示出来...

db2dz4w8

db2dz4w87#

请问一下 你们跑源码jdk的版本是哪个 我用了1.8-291 331 333都是Could not initialize class com.sun.org.apache.xml.internal.serializer.Encodings

voase2hg

voase2hg8#

Encodings

我用jdk11

x4shl7ld

x4shl7ld9#


我把这里注释掉就ok了

这里不注释也行,就是需要编译后将deployer模块的canal复制到最外层的target目录下

相关问题