跳转到内容

连接步骤

此时,您应已完成创建处理器创建步骤指南。下一步是将这两部分组合起来,在处理器中连接步骤。

创建步骤后,您可以将其连接至其他步骤。为此,我们使用名为 ProcessorBuilder 的构建器类来指定构成处理器的步骤序列。

  1. 实例化步骤后,需将其转换为 RunnableStep。RunnableStep 是封装步骤的 trait。它提供馈入步骤所需的输入和输出通道,并允许在任务中生成该步骤。SDK 提供辅助函数 .into_runnable_step,用于将步骤转换为 RunnableStep。
  2. 使用 ProcessorBuilder::new_with_inputless_first_step 设置第一个步骤。几乎所有情况下,第一个步骤都应为 TransactionStreamStep。
  3. 使用 .connect_to 将前一步连接至下一步。connect_to 使用 trait bound,确保前一步的输出类型在编译时与下一步的输入类型匹配。调用 .connect_to 时,会创建大小为 channel_size 的通道以连接前后两个步骤;同时生成一个任务,持续循环执行前一步:从输入通道读取数据,处理数据,并将输出发送至输出通道。
  4. 对处理器中的每一步重复第 3 步。
  5. 要结束 ProcessorBuilder,请使用 .end_and_return_output_receiver。此方法返回 InstrumentedAsyncReceiver,可用于处理图中最后一个步骤的输出。

以下是连接两个步骤的简单示例:

let (processor_builder, buffer_receiver) = ProcessorBuilder::new_with_inputless_first_step(
transaction_stream_step.into_runnable_step(),
)
.connect_to(extractor_step.into_runnable_step(), 10)
.end_and_return_output_receiver(10);

请参阅 aptos-indexer-processor-example 中的完整示例

连接步骤时,ProcessorBuilder 会在后台使用 petgraph 构建处理器步骤的图形表示。调用以下代码即可查看图的可视化表示:

let dot = processor_builder.graph.dot();
println!("{}", dot);

该代码会输出 DOT 语言的图,您可以使用 Graphviz 等工具将其可视化。