今天用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); }
也不知道是啥毛病,暫時是這樣做能正常的監聽數據庫,然后調用另一個服務獲取數據,具體看以后接觸到再深入學習一下。
