zoukankan      html  css  js  c++  java
  • Feign远程调用,调用方法有返回值,没有返回原方法,Canal监听数据库发生的异常:end of stream when reading header,异常中还有“你的主机中的软件中止了一个已建立的连接”等信息

    今天用canal来监听mysql binlog,使用feign远程调用,

    请求过去,并且能查询到数据返回。

    但是在调用方法处抛出异常,也就是不能走到下面的 if判断:

    异常信息中提取大致:

    end of stream when reading header

    你的主机中的软件中止了一个已建立的连接...

    后者的连接解决是因为监听类里面,我写了两个自定义的监听的方法@ListenPoint,导致终止连接,把方法改成一个自定义的监听就可以了。

    然后前面这个feign调用,我改成一个监听方法之后,试了几次,能成功回调,也会失败,具体显示是打印了这个错误:

    2019-11-03 19:57:40.730 ERROR 4360 --- [pool-1-thread-1] .s.c.c.t.AbstractBasicMessageTransponder : pool-1-thread-1: Error occurred when invoke the listener's interface! class:com.cmmplb.canal.listener.CanalDataEventListener, method:onEventContent

    搜了网上有很多方法,也试了,都有这个错,不过把feign和对应的controller中的参数,加上一个name对应,这个错误发生的次数变少了:

    feign:

    /**
         * 根据cid查询对应的内容集合
         * @param cid
         * @return
         */
        @GetMapping("/list/category/{cid}")
        Result<List<Content>> findContentByCategoryId(@PathVariable(name = "cid") Long cid);

    controller:

    /**
         * 根据cid查询对应的内容集合
         * @param cid
         * @return
         */
        @GetMapping("/list/category/{cid}")
        public Result<List<Content>> findContentByCategoryId(@PathVariable(name = "cid") Long cid) {
            List<Content> contentList = contentService.findContentByCategoryId(cid);
            return new Result<List<Content>>(true, StatusCode.OK, "查询成功", contentList);
        }

    也不知道是啥毛病,暂时是这样做能正常的监听数据库,然后调用另一个服务获取数据,具体看以后接触到再深入学习一下。

  • 相关阅读:
    uniapp IOS使用uni.getLocation获取不到具体城市名字
    uniapp 打开[ios/安卓]GPS定位权限
    for循环中利用计时器使用let和var
    uniapp 调起底部输入框textarea聊天页面被键盘顶起
    父子组件传布尔类型,发现有问题一直传字符串
    Kafka学习-基础知识
    剑指offer-删除链表中重复的节点
    LEACH协议原文详解
    主流机器学习框架
    算法工程师-职位描述
  • 原文地址:https://www.cnblogs.com/cmmplb/p/11789870.html
Copyright © 2011-2022 走看看