2

当调用链码时,是否有一种方法可以调用 REST API(外部),以便客户端应用程序可以收到新事务的通知。

除了 REST,还有其他选择吗?

4

2 回答 2

2

最好使用事件 https://github.com/hyperledger/fabric/blob/master/docs/protocol-spec.md#35-events

验证对等点和链码可以在网络上发出应用程序可以监听并采取行动的事件。有一组预定义的事件,链码可以生成自定义事件。事件由 1 个或多个事件适配器使用。适配器可以使用其他工具(例如 Web 挂钩或 Kafka)进一步传递事件。

应用程序可以从 Fabric 订阅事件流并监听链码生成的消息。

可以在此处找到如何使用事件的示例: https ://github.com/hyperledger/fabric/tree/master/examples/events/block-listener

于 2016-11-23T18:33:06.297 回答
1

添加到 Sergey 的答案中,有 3 种类型的事件。

  1. BLOCK EVENT,在账本更改时创建。
  2. REJECTION EVENT,在发生任何错误时创建(在用户链码或系统链码中)
  3. CHAINCODE EVENT,它是用户句柄,允许用户链码创建事件。[我注意到的奇怪的事情是,根据当前设计,每次调用只允许一个 CHAINCODE 事件]

你可以在你的终端运行一个事件监听器/客户端,监听 gRPC 端口,(你可以从 core.yaml 文件中获取端口)或者你甚至可以参考 Sergey 提到的例子。

就您而言,我猜您正在寻找成功的交易。在这种情况下,您应该监听BLOCK 事件和 REJECTION 事件。触发调用时收到的事务 UUID 可用于扫描事件并在匹配时触发操作。另请注意,如果事务导致 REJECTION EVENT,则它不会有 BLOCK EVENT。希望这可以帮助。

于 2016-11-24T04:20:06.430 回答