xizixuejie

Results 12 comments of xizixuejie

根据你的截图来看,很久没有收到消息,猜测可能是长时间未通讯断开连接,这个我也没遇到过。我一直用的kafka模式,要不你改下 canal 服务端的 `canal.instance.network.soTimeout` 配置试试看

我没用过ActiveMQ呢,我看着 canal-server 的文档 [Canal Kafka RocketMQ QuickStart](https://github.com/alibaba/canal/wiki/Canal-Kafka-RocketMQ-QuickStart) 里也没有写可以用ActiveMQ,如果你会的话,欢迎提交PR~

没太明白您的意思,是两个数据库中有相同的表名,但是表中的字段不一样吗

就是不同的表呗,那你的项目里应该有对应的实体类吧,现在实现的就是根据实体类中的字段转换的。如果你用了mybatis-plus或者jpa的注解,会根据注解上的属性来映射

确实是有点麻烦,目前还不支持直接这样配置,以后版本我会考虑加上的。感谢你提的意见

可以自己在maven里指定 `com.alibaba.otter:canal.client` 的版本,但是可能会有一些小问题,参考#14

感谢提出这个问题,大概执行流程如下: 1. 入口是 `ICanalClient` 中的 `handleListening` 方法,监听原始的canal消息 2. 在 `IMessageHandler` 中使用 `EntryListenerContext` 找到表名对应的 `EntryListener` 。以及处理转换原始消息,获取每一行的数据。 3. `RowDataHandler` 中使用 `IConvertFactory` 创建实体对象,根据 `CanalEntry.EventType` 确定执行`EntryListener` 的那个方法。

`canal.async` 默认为true,设置为false才会回滚消息。 但是如果你是用的tcp模式或者 `canal.mq.flat-message` 设置为false了,由于`AbstractMessageHandler` 中catch异常没抛出,我改一下。

tcp模式下 `canal.timeout` 设置为 -1 kafka模式下 `canal.timeout` 设置为 0