首页 > 解决方案 > 跟踪 Corda 中的状态变化

问题描述

我计划使用 vaultTrack 方法来跟踪状态对象的变化。一旦我在客户端级别捕获事件,我计划将这些数据存储在离线数据库中或调用另一个 API。在这个实施过程中会不会有任何挑战。据我了解,RPC 客户端库将一直在监听状态变化,并且它还会处理来自外部各方的传入 RPC 调用。会不会降低性能。VaultTrack 方法如何在内部工作。

标签: corda

解决方案


嗨,我在您的实施中没有看到任何挑战。

在 Corda 中,我们使用 Apache Artemis 进行 RPC 通信。Corda-RPC 库必须包含在客户端才能连接到服务器。

在内部这是这样工作的 -

启动时,将在 RPC 客户端(客户端)和 RPC 服务器(在 Corda 节点内)上创建 Artemis,创建客户端和服务器队列,并在客户端和服务器之间启用/建立会话。Corda-RPC 库包含一个客户端代理,它将 RPC 客户端调用转换为低级 Artemis 消息并将它们发送到服务器 Artemis 实例。这些 RPC 请求存储在服务器端的 Artemis 队列中。服务器端消费者检索这些消息,进行适当的 RPC 调用,并向客户端发送确认。方法完成后,将回复发送回客户端。回复包含在 Artemis 消息中,并由服务器 Artemis 发送到客户端 Artemis。然后客户端使用来自客户端 Artemis 队列的回复。

Corda-RPC 库中的客户端代理抽象了上述过程。从客户端的角度来看,您应该只创建代理实例并进行 RPC 调用。

我会敦促您使用重新连接客户端。您可以在我写的博客中阅读更多相关信息。

另请阅读博客的最后一部分,其中讨论了如何处理重新连接/故障转移场景。


推荐阅读