调用事务

调用事务用于在目标节点上调用一个或多个集群命令。它类似于对集群中定义的命令进行的远程过程调用。

与写入事务类似,调用事务支持定时事务和未定时事务。如需详细了解定时交易,请参阅定时操作和非定时操作部分。

未定时调用交易

无计时调用事务的操作顺序
图 1:无定时调用事务

调用请求操作

方向:启动器 -> 目标

与读取请求操作和写入请求操作类似,在此操作中,发起程序为目标提供以下内容:

  • 调用请求:集群命令的路径列表,以及命令的可选参数(名为命令字段)。
  • 定时请求:一个标志,用于指示此操作是否为定时调用事务的一部分。
  • 抑制响应:一个标记,用于指明是否应抑制调用响应操作。
  • Interaction ID:一个整数,用于将调用请求操作与调用响应操作进行匹配。

调用响应操作

方向:目标 -> 发起方

目标收到调用请求操作后,它将使用包含以下内容的调用响应操作来完成事务:

  • 调用响应:每个发送的调用请求的命令响应或状态列表。
  • 互动 ID:一个整数,用于将调用响应操作与调用请求操作进行匹配。

无时间调用限制

“调用请求操作”可能是组播,但在这种情况下必须设置禁止响应标志。其原因在于,否则网络可能会被组中每个成员的同步响应泛滥。

如需启用此行为,“调用请求”列表中所用的路径可能包含群组,也可能包含通配符,但仅限于“端点”字段。此外,如果 Action 是组播,则事务将终止,并且没有响应。

定时调用事务

与定时写入事务类似,定时调用事务也从定时请求操作开始。

定时调用事务的操作顺序
图 2:定时调用事务

定时请求操作

方向:启动器 -> 目标

发起者会启动发送此 Action 的交易,其中包含:

  • 超时:此事务可以保持打开状态的毫秒数。在此期间,发起者发送的下一项操作将被视为有效。

收到定时请求操作后,目标必须使用状态响应操作确认定时请求操作。一旦发起者收到未报告任何错误的状态响应操作,就会发送“调用请求操作”。

调用请求操作

与前面介绍的调用请求操作相同。

调用响应操作

与上述调用响应操作相同。

定时调用限制

所有调用命令都可以对定时互动进行调用。定时请求操作、调用请求操作和调用响应操作仅限 Unicast,因此不能用作定时调用事务的组播。

调用请求操作支持使用包含群组的路径以及通配符,但调用响应操作不支持通配符。