hyperledger fabric的区块事件

Hyperledger Fabric的事务处理是异步的,需要应用程序通过注册侦听器来处理事务生命周期。区块事件由committing peers发布,提供三种注册方式:块事件、事务事件和链码事件监听器。若侦听器在事件发布时崩溃,可以通过记录块号或使用消息队列来弥补错过事件。
摘要由CSDN通过智能技术生成

      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

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值