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

 

也不知道是啥毛病,暫時是這樣做能正常的監聽數據庫,然后調用另一個服務獲取數據,具體看以后接觸到再深入學習一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM