首页 > 数据库技术 > 详细

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

时间:2019-11-04 01:22:44      阅读:717      评论:0      收藏:0      [点我收藏+]

今天用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 listeners 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);
    }

 

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

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

原文:https://www.cnblogs.com/cmmplb/p/11789870.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!