调用事务

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

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

无时限的调用交易

非定时调用交易的操作序列
图 1:未计时的调用交易

调用请求操作

方向:发起方 -> 目标

与读取请求操作和写入请求操作类似,在此操作中,发起者会向目标提供以下信息:

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

调用响应操作

方向:目标 -> 启动者

在目标收到调用请求操作后,它将通过携带以下内容的调用响应操作来完成交易:

  • 调用响应:针对发送的每个调用请求的命令响应或状态列表。
  • 互动 ID:用于将“调用响应”操作与“调用请求”操作相匹配的整数。

无时间限制的调用限制

调用请求操作可以是群播,但在这种情况下,必须设置 Suppress Response 标志。原因是,否则网络可能会被群组中每位成员的同时响应所淹没。

为了实现此行为,在“调用请求”列表中使用的路径可能包含组,或者可能包含通配符,但只能在“端点”字段中包含通配符。此外,如果 Action 是 groupcast,则此交易会终止,且不会有响应。

定时调用交易

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

定时调用交易的操作序列
图 2:定时调用交易

定时请求操作

方向:发起方 -> 目标

发起方启动交易,发送包含以下内容的 Action:

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

收到定时请求操作后,目标必须使用状态响应操作来确认定时请求操作。当发起方收到报告无错误的状态响应操作后,会发送调用请求操作。

调用请求操作

与之前描述的 Invoke Request Action 相同。

调用响应操作

与之前描述的 Invoke Response Action 相同。

定时调用限制

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

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