跟踪 Corda 中的状态变化
Track State changes in Corda
我计划使用 vaultTrack 方法来跟踪状态变化 object.Once 我在客户端捕获事件,我计划将这些数据存储在离线数据库中或调用另一个 API。在这个实施中会不会有什么挑战。据我了解,RPC 客户端库将一直监听状态更改,并且它还处理来自外部各方的传入 RPC 调用。会不会降低性能。 vaultTrack 方法在内部究竟是如何工作的。
您好,我认为您的实施没有任何挑战。
在 Corda 中,我们使用 Apache Artemis 进行 RPC 通信。 Corda-RPC 库必须包含在客户端才能连接到服务器。
内部是这样工作的-
启动时,Artemis 将在 RPC 客户端(客户端)和 RPC 服务器(在 corda 节点内)上创建,创建客户端和服务器队列,并且客户端和服务器之间的会话 enabled/established。 Corda-RPC 库包含一个客户端代理,它将 RPC 客户端调用转换为低级 Artemis 消息并将它们发送到服务器 Artemis 实例。这些 RPC 请求存储在服务器端的 Artemis 队列中。服务器端消费者检索这些消息,进行适当的 RPC 调用,并向客户端发送确认。方法完成后,回复将发送回客户端。回复包含在 Artemis 消息中,并由服务器 Artemis 发送到客户端 Artemis。然后客户端使用来自客户端 Artemis 队列的回复。
Corda-RPC 库中的客户端代理抽象了上述过程。从客户端的角度来看,您应该只创建代理实例并进行 RPC 调用。
我建议您使用重新连接客户端。您可以在我写的 blog 中阅读更多相关信息。
另请阅读博客的最后一部分,其中讨论了如何处理 reconnection/failover 场景。
我计划使用 vaultTrack 方法来跟踪状态变化 object.Once 我在客户端捕获事件,我计划将这些数据存储在离线数据库中或调用另一个 API。在这个实施中会不会有什么挑战。据我了解,RPC 客户端库将一直监听状态更改,并且它还处理来自外部各方的传入 RPC 调用。会不会降低性能。 vaultTrack 方法在内部究竟是如何工作的。
您好,我认为您的实施没有任何挑战。
在 Corda 中,我们使用 Apache Artemis 进行 RPC 通信。 Corda-RPC 库必须包含在客户端才能连接到服务器。
内部是这样工作的-
启动时,Artemis 将在 RPC 客户端(客户端)和 RPC 服务器(在 corda 节点内)上创建,创建客户端和服务器队列,并且客户端和服务器之间的会话 enabled/established。 Corda-RPC 库包含一个客户端代理,它将 RPC 客户端调用转换为低级 Artemis 消息并将它们发送到服务器 Artemis 实例。这些 RPC 请求存储在服务器端的 Artemis 队列中。服务器端消费者检索这些消息,进行适当的 RPC 调用,并向客户端发送确认。方法完成后,回复将发送回客户端。回复包含在 Artemis 消息中,并由服务器 Artemis 发送到客户端 Artemis。然后客户端使用来自客户端 Artemis 队列的回复。
Corda-RPC 库中的客户端代理抽象了上述过程。从客户端的角度来看,您应该只创建代理实例并进行 RPC 调用。
我建议您使用重新连接客户端。您可以在我写的 blog 中阅读更多相关信息。
另请阅读博客的最后一部分,其中讨论了如何处理 reconnection/failover 场景。