本节全面讲述Fabric事件监听机制,并用实际客户端代码演示事件监听的特点、特性。

1. Fabric 2.2 支持的事件类型

RegisterBlockEvent: 区块事件监听,当产生区块时客户端收到消息,接收到完整的区块数据。
RegisterFilteredBlockEvent:也是区块事件监听,但完整的区块数据结构复杂,有很多参数,调用该函数会精简返回参数。
RegisterChaincodeEvent:监听合约事件,智能合约调用SetEvent设置事件,客户端接收到事件。
RegisterTxStatusEvent:获取某个指定的txid上链事件,一般对链上数据监听,不使用该接口。当TPS比较高时,客户端的内存占用较多。

2. 事件监听源代码

下面这段代码是在37. 使用Fabric-Go-SDK 访问农产品溯源区块链集群基础上进行修改,构建区块链集群以及使用fabric-go-sdk访问区块链集群不在本节介绍。

下面源代码包含RegisterBlockEventRegisterFilteredBlockEventRegisterChaincodeEvent,并没有RegisterTxStatusEvent,是因为事件监听实时发生,客户端错过后无法监听,当发送交易上链后虽