好長時間沒有更新博客,網上也有很多fabric的部署資料,而且也都很不錯,也比較全面。我就再想重復的工作暫時就不用做了,后面抽時間在做細化和分類;
就將學習和工作中遇到和解決的問題經驗,做一些分享。
而這部分的經驗在網上也很難找到。如果過程中有什么問題,希望朋友們可以留言。謝謝!!
1,Channel長連接
在new出一個channel連接時候,在客戶端中會以channel名稱存儲的鏈接,所以在此獲取通道時候,需要使用get
2,添加事件機制,1.2和1.3的區別
這里我們需要知道的時候,在fabric1.3以上的版本,已經將7053這個事件邏輯刪除,將時間通知移植到了channel上面,也就是說在1.3以后的版本不需要使用addEventHub為每個
節點增加事件。
所以要想在代碼層動態切換,就需要判斷目標節點的fabric的版本
(a)對新建channel鏈接,對1.3版本,則不需要增加事件
(b)對在channel鏈接中,已經存在的節點事件,則需要將其刪除。
備注:如何獲取fabric的版本信息,可以通過docker images查看節點的版本。我這里使用的是腳本讀取版本的信息。
3,多組織增加事件注意點
也許你在實際使用fabric的過程中,會經常遇到希望接收到Org1MSP,但是接收到是Org2MSP,這樣的錯誤。
主要原因是在做交易的時候,傳的用戶歸屬的組織MSP傳的不正確。這個是現象問題,但根本原因是在注冊事件的時候,當時的用戶歸屬MSP一定要對應目標組織。
先來看一下sdk源碼:
上述,是在增加事件的時候,會使用當前channel鏈接中用戶信息,鏈接服務器。也就是說一旦建立了鏈接,那么在整個channel的生命周期中,對目標節點的事件MSP都是當初用戶的MSP。
如何解決這個問題,那么我們就要在注冊這個鏈接的時候想辦法
換句話說,在注冊時間的時候,要檢查當前用戶歸屬的MSP,是否可以你增加的節點同屬一個MSP,如果不是,則不注冊事件,如果是則注冊時間。當再次獲取channel連接的時候,在檢查一下當前所有事件連接是否正確,或未增加的,為增加的,再更加情況增加組織事件: