fabric應用程式除了通過主動查詢來獲取當前已確認的狀態,還可以通過訂閱並監聽事件(event)來獲取交易執行資訊,用於進行交易確認或者審計。
本節的例子將展示如何在鏈碼中傳送事件。詳細**可見examples/chaincode/go/eventsender/eventsender.go。
傳送事件需要使用stub.setevent方法。方法格式為setevent(namestring,payloadbyte)error。其中,name表示事件名稱,payload為事件內容。
通過該方法,可以設定當這個交易在committer處被認證通過,寫入到區塊時所傳送的事件。
示例鏈碼的invoke分支方法被呼叫時,會將記錄在賬本中的遞增序列和invoke傳入的引數串聯起來作為事件內容,以evtsender為事件名稱,呼叫stub.setevent方法。
關鍵**如下所示:
func (t *eventsender) invoke(stub shim.chaincodestubinte***ce, args string)應用開發者可以使用sdk中封裝的方法監聽鏈碼發出的事件,並據此作出處理邏輯。也可以簡單用fabric提供的block-listener工具監聽並檢視事件。pb.response
noevts, _ := strconv.atoi(string(b))
tosend := "event " + string(b)
for _, s := range args
err = stub.putstate("noevents", byte(strconv.itoa(noevts+1)))
if err != nil
err = stub.setevent("evtsender", byte(tosend))
if err != nil
return shim.success(nil)
}
block-listener工具**位於examples/events/block-listener,其中展示了如何利用事件客戶端來從網路中獲取事件資訊。建立事件客戶端的核心**如下所示:
func createeventclient(eventaddress string, _ string) *adapterobcehclient, _ = consumer.neweventsclient(eventaddress, 5, adapter)
if err := obcehclient.start(); err != nil
return adapter
}
'); (window.slotbydup = window.slotbydup || ).push(); })();
'); (window.slotbydup = window.slotbydup || ).push(); })();
Hive UDF開發案例
bin hive中操作 臨時函式的使用 add jar home hadoop lib train 1.0 snapshot.jar 將上傳的jar包匯入到classpath變數裡 list jars 檢視匯入的jar包 create temporary function say hello as ...
Flume基礎(四) 企業開發案例(一)
1 案例需求 首先,flume 監控本機 44444 埠,然後通過 telnet 工具向本機 44444 埠發 送訊息,最後 flume 將監聽的資料實時顯示在控制台。2 需求分析 3 實現步驟 1 安裝 telnet 工具 將 rpm 軟 件 包 xinetd 2.3.14 40.el6.x86 ...
移動端開發案例
touchstart touchmove touchend 可以實現拖動元素 但是拖動元素需要當前手指的座標值 我們可以使用 targettouches 0 裡面的pagex 和 pagey 移動端拖動的原理 手指移動中,計算出手指移動的距離。然後用盒子原來的位置 手指移動的距離 手指移動的距離 手...