hyperledger fabric的區塊事件

      hyperledger v1.1中的事務處理是一個跨越多個組件(application,endorsing peer,order,committing peer)的長操作,需要花費相當長的時間(以秒爲單位而不是毫秒)來完成。因此,應用程序必須設計成異步通知的方式來進行對事務生命週期的處理。在交易提案成功通過之後,在事務消息已成功廣播給order之前,應用程序應該註冊一個偵聽器listener,以便在事務達到最終狀態(當包含該事務的塊被添加時到peer的區塊鏈上)時進行通知。

    fabric committing peers提供了一個事件流來將區塊發佈到已註冊的偵聽器。只要committing peers將驗證區塊添加到自己的賬本上時,該塊都會被髮布給已經註冊的監聽器。fabric提供了三種註冊偵聽器來獲得通知:

1:註冊一個“塊監聽器”以便爲每個區塊事件調用。偵聽器將傳遞一個完全解碼的Block對象。請參閱registerBlockListener();

2:註冊一個“事務監聽器”,當id提交的特定事務被提交時(在已發佈的塊中發現)被調用。監聽器將傳遞事務ID,事務狀態和塊號。請參閱registerTxListener();

3:註冊一個“chaincode事件監聽器”以在特定鏈代碼事件到達時被調用。偵聽器將傳遞ChaincodeEvent,塊號,事務ID和事務狀態。請參閱registerChaincodeEventListener();

    但是這些事件通知是短暫的,如果註冊的監聽者在事件發佈時崩潰,監聽器就會錯過該事件。下面有幾種技術可以彌補由於客戶端崩潰導致的錯過事件
1:註冊塊事件偵聽器並記錄接收到的塊號,以便當下一個塊到達並且其序號不是下一個序列時,則應用程序確切知道錯過了哪些塊事件。然後,它可以使用queryBlock從目標對端獲取這些未命中的塊,或使用startBlock選項註冊事件以恢復或重放事件。如果您想停止收聽,您還可以包含一個endBlock號碼。
2:使用消息隊列來捕獲所有塊事件。這樣您將保證不會錯過任何事件。結構事件監聽器可以用任何編程語言編寫。

原文地址:https://fabric-sdk-node.github.io/ChannelEventHub.html

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章