跟踪 Corda 中的状态变化

Posted

技术标签:

【中文标题】跟踪 Corda 中的状态变化【英文标题】:Track State changes in Corda 【发布时间】:2021-12-12 21:02:42 【问题描述】:

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

【问题讨论】:

【参考方案1】:

您好,我认为您的实施没有任何挑战。

在 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 调用。

我强烈建议您使用重新连接客户端。您可以在我写的blog 中阅读更多相关信息。

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

【讨论】:

以上是关于跟踪 Corda 中的状态变化的主要内容,如果未能解决你的问题,请参考以下文章

跟踪对象字段变化的最佳架构是啥?

跟踪进度数据库中的结构变化

在资产跟踪设备研发中,如何进行固件升级

使用 NSDocument 和 NSWindow 跟踪 NSTextView 的变化

SQL查询以跟踪新订单或旧订单中的余额变化,没有日期

NIO3:缓冲区Buffer