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

问题描述 投票:0回答:1

我正在为一个需要通知任何给定区块链交易状态的客户端工作。为此,我正在学习如何利用事件来实现这一目标。我尝试参考有关HLF 1.4中事件的官方文档(找到here),但指向SDK文档的链接无效。我也找到了this question,但是提供的链接也全部消失了。

然后我遇到了Fabric Gateway实现(提到了here,发现了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)来设置事件。

问题是,我没有看到调试输出,并且不确定自己在做什么错,所以如果有人可以将我定向到要引用的正确资源,和/或帮助我使上面的代码以某种方式工作。


((如果我还需要提供其他信息,请通过评论告知我,我将在此处添加它们。)

java hyperledger-fabric blockchain event-listener hyperledger-chaincode
1个回答
0
投票

要使用高级网关SDK,您需要先创建一个网关对象,然后从中获取一个网络对象(以示例代码here作为开始)。您可以从网络对象调用传递给使用者函数的addBlockListener()。然后,当您在合同对象上调用SubmitTransaction时,应该调用您的侦听器。

就测试而言,最好使用场景测试代码hereherehere作为用法示例。

© www.soinside.com 2019 - 2024. All rights reserved.