canal-spring
canal-spring copied to clipboard
比官方示例慢一些,想知道是哪些地方会导致慢,怎么优化,或者能说一下怎么设计的,感谢
比官方示例慢一些,想知道是哪些地方会导致慢,怎么优化,或者能说一下怎么设计的,感谢
同样环境下,对比官方示例慢接近1秒
感谢提出这个问题,大概执行流程如下:
- 入口是
ICanalClient
中的handleListening
方法,监听原始的canal消息 - 在
IMessageHandler
中使用EntryListenerContext
找到表名对应的EntryListener
。以及处理转换原始消息,获取每一行的数据。 -
RowDataHandler
中使用IConvertFactory
创建实体对象,根据CanalEntry.EventType
确定执行EntryListener
的那个方法。
感谢回复,建议你创建一个QQ或者微信群,大家群策群力一起优化。另外发现你代码写的很整洁,点赞
抛出异常,消息没有回滚。请教异常处理机制是什么
canal.async
默认为true,设置为false才会回滚消息。
但是如果你是用的tcp模式或者 canal.mq.flat-message
设置为false了,由于AbstractMessageHandler
中catch异常没抛出,我改一下。
消息拉取间隔设置0延时有什么不好的地方吗
tcp模式下 canal.timeout
设置为 -1
kafka模式下 canal.timeout
设置为 0
不知道啊,我一直是设置的1
请教一个问题,看了官方文档没有找到答案。canal客户端或者说你的这个项目如果停止了,再重新启动这个程序的时候怎么获取到停止的这段时间数据库数据的变化历史呢
如果消息没被消费,客户端会自动拉取的
如果你是连了其他的mq,那就存到消息中间件里了;如果你是直连的,应该是存到canal的服务端了
能说一下怎么配置rabbitMQ消费方式吗,virtual-host不知道设置什么格式。另外我看源码不管哪种消费方式都添加了超时配置,怎么取消超时机制呢