You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

节点开启drainingMode后,如何监控in-flight flows的数量?

监控Corda节点Draining模式下的在途Flow数量

当你把Corda节点的drainingMode设置为true后,节点会停止接收新的Flow启动请求,只专注于完成正在运行的(in-flight)Flow。要安全关闭节点,核心就是等这些在途Flow的数量降到0,下面是通过RPC监控这个数量的具体方法:

1. 建立RPC连接到目标节点

首先你需要通过Corda RPC客户端(或者Corda CLI)连接到要监控的节点。不管用哪种语言的客户端,核心都是获取CordaRPCOps实例——这是和节点交互的核心接口。

2. 查询并统计在途Flow数量

Corda的RPC提供了stateMachinesSnapshot()方法,它会返回当前所有活跃状态机的列表,每个状态机对应一个正在运行的Flow。列表的长度就是在途Flow的数量。

代码示例(Kotlin)

// 假设已经完成RPC连接初始化,proxy是CordaRPCOps实例
fun monitorInFlightFlows(proxy: CordaRPCOps) {
    val activeFlows = proxy.stateMachinesSnapshot()
    val count = activeFlows.size
    println("当前在途Flow数量: $count")
}

代码示例(Java)

// 已初始化CordaRPCOps proxy实例
public void monitorInFlightFlows(CordaRPCOps proxy) {
    List<StateMachineInfo> activeFlows = proxy.stateMachinesSnapshot();
    int count = activeFlows.size();
    System.out.println("当前在途Flow数量: " + count);
}

使用Corda CLI快速查询

如果你不想写代码,也可以用Corda CLI的RPC命令直接查询:

cordarpc state-machines

执行后会列出所有活跃的状态机,你可以直接数条目数,或者结合命令行工具自动统计:

cordarpc state-machines | wc -l

3. 持续监控直到数量为0

因为开启Draining模式后节点不会接收新Flow,所以在途数量只会逐步减少。你可以写个定时循环(比如每隔2-5秒)调用上述方法,当返回的数量为0时,就可以安全关闭节点了。

注意:如果在监控过程中数量一直没有降到0,可能是某个Flow卡住了,需要进一步排查状态机的详细信息(stateMachinesSnapshot()返回的每个StateMachineInfo包含Flow的ID、类型等信息)。

内容的提问来源于stack exchange,提问作者Adrian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:27:07