【发布时间】:2018-08-06 02:47:44
【问题描述】:
我们正在通过 Corda RPC 代理上的 vaultTrack 方法在保管库中捕获新的已提交状态,以便在日志记录中使用。虽然它工作正常,但我们认为它可能会对网络连接造成一些开销。因此,我们决定尝试在 CorDapp 中使用 ServiceHub 来捕获新事件。不幸的是,每次调用流时事件都会发生(基于可观察的概念?)。也许我们没有正确设置?根据您的经验和专业知识,您能否
- 建议出了什么问题;和
- 对应的解决方案?
更多细节在这里: 因为我们使用 CorDapp 的日志作为性能基准。因此,我们只关注新提交的状态事件。在我们开始的 API 端点中,我们使用 RPC 中的 VaultTrack 来记录每个新的提交状态事件,如下例所示:
虽然 API 似乎工作正常,但我们认为它可能会在整体性能上消耗 RPC 连接,因为每次提交新状态时都会调用 observable。如果我们错了,请纠正我们。因此,我们决定改为在流中记录事件。
在 CorDapp 中,我们使用 ServiceHub 中的 VaultService 将每个新的已提交状态事件记录在流启动器的“调用函数”中,如下例所示:
我们发现 CorDapp 中记录的日志,即流中(来自上面提到的 serviceHub)每次调用流时都会不断获得重复的日志。从我们最初的调查中,我们发现问题是每次启动流时“vaultService”都会被订阅。因此,我们切换回使用 API 端点方法。请您告诉我们在 CorDapp 中捕获事件的正确方法。在我们的性能测试期间记录新提交状态的事件。
【问题讨论】:
标签: corda