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);
        }

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

  • 相关阅读:
    Tomcat虚拟目录的映射方式
    Linux常用命令
    java断点调试
    破解MyEclipse
    JS判断浏览器
    css3 box-sizing详解。
    this-使用call . apply
    this-内部函数
    this-对象方法调用
    this-纯函数
  • 原文地址:https://www.cnblogs.com/cmmplb/p/11789870.html
Copyright © 2011-2022 走看看