Giter Site home page Giter Site logo

canal-spring's Introduction

Hi there 👋

Visitor Count

xizixuejie's GitHub stats

canal-spring's People

Contributors

hisioni avatar wuxinghongqixiadexiaoshumiao avatar xizixuejie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

canal-spring's Issues

实体类字段属性转换异常

如果实体类中的属性没有在 io.xzxj.canal.core.util.StringConvertUtil#convertType 方法中定义,会抛出异常

实体类属性

@Data
@TableName("t_test")
public class TestEntity {

    private Long id;

    private String name;

    @TableField("f_age")
    private Integer age;

    @TableField("f_gender")
    private Integer gender;

    private byte[] annex;

}

异常信息

java.lang.RuntimeException: parse event has an error , data:[{f_gender=3, name=3, id=47, f_age=3, annex=ab}]
	at io.xzxj.canal.core.handler.AbstractFlatMessageHandler.handleMessage(AbstractFlatMessageHandler.java:60) ~[classes/:na]
	at io.xzxj.canal.core.handler.impl.AsyncFlatMessageHandlerImpl.lambda$handleMessage$0(AsyncFlatMessageHandlerImpl.java:30) ~[classes/:na]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_341]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_341]
	at java.lang.Thread.run(Thread.java:750) ~[na:1.8.0_341]
Caused by: java.lang.IllegalArgumentException: Can not set [B field io.xzxj.canal.example.entity.TestEntity.annex to null value
	at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167) ~[na:1.8.0_341]
	at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171) ~[na:1.8.0_341]
	at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:81) ~[na:1.8.0_341]
	at java.lang.reflect.Field.set(Field.java:764) ~[na:1.8.0_341]
	at io.xzxj.canal.core.util.TableFieldUtil.setFieldValue(TableFieldUtil.java:98) ~[classes/:na]
	at io.xzxj.canal.core.factory.MapConvertFactory.newInstance(MapConvertFactory.java:26) ~[classes/:na]
	at io.xzxj.canal.core.factory.MapConvertFactory.newInstance(MapConvertFactory.java:13) ~[classes/:na]
	at io.xzxj.canal.core.factory.AbstractConvertFactory.newInstance(AbstractConvertFactory.java:22) ~[classes/:na]
	at io.xzxj.canal.core.handler.impl.MapRowDataHandlerImpl.handleRowData(MapRowDataHandlerImpl.java:40) ~[classes/:na]
	at io.xzxj.canal.core.handler.impl.MapRowDataHandlerImpl.handleRowData(MapRowDataHandlerImpl.java:17) ~[classes/:na]
	at io.xzxj.canal.core.handler.AbstractFlatMessageHandler.handleMessage(AbstractFlatMessageHandler.java:58) ~[classes/:na]
	... 4 common frames omitted

kafka 模式,控制台报canal 消费异常

使用kafka 模式控制台报错canal 消费异常 回滚消息
2023-11-07 18:06:27.474 ERROR 33704 --- [l-client-thread] i.x.canal.core.client.KafkaCanalClient : canal 消费异常 回滚消息

com.alibaba.fastjson2.JSONException: error, offset 1, char �
at com.alibaba.fastjson2.JSONReaderUTF16.skipValue(JSONReaderUTF16.java:1585) ~[fastjson2-2.0.4.jar:na]
at com.alibaba.fastjson2.reader.ObjectReaderBean.processExtra(ObjectReaderBean.java:49) ~[fastjson2-2.0.4.jar:na]
at com.alibaba.fastjson2.reader.ObjectReaderBean.readObject(ObjectReaderBean.java:167) ~[fastjson2-2.0.4.jar:na]
at com.alibaba.fastjson2.JSON.parseObject(JSON.java:258) ~[fastjson2-2.0.4.jar:na]
at com.alibaba.otter.canal.client.kafka.KafkaCanalConnector.getFlatListWithoutAck(KafkaCanalConnector.java:233) ~[canal.client-1.1.6.jar:na]
at io.xzxj.canal.core.client.KafkaCanalClient.handleListening(KafkaCanalClient.java:31) ~[canal-client-core-0.0.7.jar:na]
at java.lang.Thread.run(Thread.java:750) ~[na:1.8.0_382]

打断点跟踪了一下,是在 getFlatListWithoutAck 这个方法里的 JSON.parseObject 报错,
我看 传给JSON.parseObject 好像是乱码

image

如何开启日志

如何开启日志呢?还有就是一定要配MQ吗
没配MQ没有任何日志,也没有任何效果
都是照着文档来的
image

6

6

增加List字段转换

对某些表中为list集合的字段增加转换
image
在StringConvertUtil中增加一个判断即可

else if (type.equals(List.class)) {
            return str2List(columnValue);
        }

转换就1行代码

private static List<String> str2List(String value) {
        return JSON.parseArray(value, String.class);
    }

大佬,我监听了多张表,建了多个Listener,但是目前好像只有一个Listener生效,求解大佬!

是这样的,现在canal是可以正常监听到多个表的变动,并且成功推送到了kafka里面。然后程序里定义的多个表的Listener,只有一个表的Listener可以正常接收到kafka的数据,在下甚是困惑,望大佬能答疑解惑!
Listener_1的配置:

@component
@CanalListener(schemaName = {"db_a" ,"db_b" ,"db_c"}, tableName = "base_special_topic")
public class CanalTopicListener implements EntryListener {
增删改查的方法......
}

Listener_2的配置:

@component
@CanalListener(schemaName = {"db_a" ,"db_b" ,"db_c"}, tableName = "base_subject")
public class CanalSubjectListener implements EntryListener {
增删改查的方法...
}

Listener_3的配置:

@component
@CanalListener(schemaName = {"db_a" ,"db_b" ,"db_c"}, tableName = "base_event")
public class CanalEventListener implements EntryListener {
增删改查的方法...
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.