我正在运行一个弹簧服务器,该服务器通过RPC连接到corda节点,目前我在初始化服务器时正在初始化连接。如果rpc节点出现故障,能够重新连接到rpc的最佳实践是什么?我只是轮询并检查rpc是否已断开连接?
答案 0 :(得分:1)
在文档的Reconnecting RPC Clients部分中,与节点进行了某种程度的讨论。
在当前版本的Corda中,RPC连接和所有 客户端创建的观察者变量只会引发异常 并在节点或TCP连接不可用时死亡。
处理这些错误并重新连接是客户的责任 一旦节点再次运行。针对停止运行RPC命令 节点只会抛出异常。先前创建的Observables将 节点重启后不发出任何事件。客户必须 明确地重新运行该命令并重新订阅以接收更多事件。
具有副作用(例如启动流)的RPC可能具有 即使节点未收到返回值,也要在节点上执行 客户。确认的唯一方法是执行业务级查询 然后相应地重试。示例runFlowWithLogicalRetry可帮助您 这个。
如果用户需要这种功能来编写弹性RPC 客户,我们有一个示例,展示了如何实现此目标,以及 也是一个彻底的测试,证明它可以按预期工作。
当前到ReconnectingCordaRPCOPs
的无效链接已被here移动