如何使用HLF中的事件通知客户端块提交和/或事务状态



我正在处理一个客户端,该客户端需要通知任何给定区块链交易的状态。为此,我正在学习如何利用事件来实现这一目标。我试着参考HLF1.4中关于事件的官方文档(在这里找到(,但指向SDK文档的链接已经失效。我也发现了这个问题,但提供的链接也都死了。

然后我发现了Fabric Gateway实现(这里提到(,我发现了BlockListenerTest,它构成了这个问题的基础。


我当前的暂存代码如下:

BlockEventSourceFactory factory = BlockEventSourceFactory.getInstance();
BlockEventSource blockEventSource = factory.newBlockEventSource(channel);
blockEventSource.addBlockListener(blockEvent -> {
System.out.println("[zzzzz] Block number is " + blockEvent.getBlockNumber());
});
channel.sendTransaction(responses);
blockEventSource.close();

在我的Java链代码中,我调用stub.setEvent("myEventName", null)来设置事件。

问题是,我看不到我的调试输出,也不确定我做错了什么,所以如果有人能指导我参考正确的资源,和/或帮助我以某种方式使上面的代码正常工作,我将不胜感激。


(如果我应该提供任何其他信息,请通过评论告诉我,我会在这里添加它们。(

要使用高级Gateway SDK,您需要首先创建一个Gateway对象,然后从中获取一个网络对象(首先使用此处的示例代码(。从网络对象,您可以调用传入消费者函数的addBlockListener((。然后,当您在合约对象上调用submitTransaction时,您的侦听器应该被调用。

在测试方面,您最好在这里、这里和这里查看场景测试代码,以获取使用示例。

我试图参考HLF1.4中关于事件的官方文档(在此处找到(,但指向SDK文档的链接已失效。我也发现了这个问题,但提供的链接也都死了。

我签入了结构sdk节点文档。我发现有三个关于事件的教程可以帮助你解决问题。它们是transaction-commit-events.md、eventcheckpointer.md和Listeningtoevents.md。

  1. 事务提交事件提供了一个标题为"事件处理策略"的特殊部分
  2. Eventcheckpointer.md提供了一种重放对等方发出的未命中事件的方法,它还概述了未命中事件
  3. Listeningtoevents.md还包含一个关于事件的部分。它还对三种不同类型的事件进行了解释

我希望这三个文件能帮助你解决问题并掌握HLF。

奖金:Fabric社区令人惊叹。请确保加入此Fabric SDK频道或查看其他Fabric聊天频道(请参阅聊天部分(。

最新更新