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

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

  • 相关阅读:
    javaSE基础知识
    oracle错误分析:ora-04063:view view_test has errors
    爬虫—01-爬虫原理与数据抓取
    Web—13-判断网站请求来自手机还是pc浏览器
    Web—12-详解CSS的相对定位和绝对定位
    Web—11-手机端页面适配
    Web—10-前端性能优化
    Web—09-正则表达式
    知识储备—01-进程,线程,多线程相关总结
    Web—08-移动端库和框架
  • 原文地址:https://www.cnblogs.com/cmmplb/p/11789870.html
Copyright © 2011-2022 走看看