连接步骤
此时,您应已完成创建处理器和创建步骤指南。下一步是将这两部分组合起来,在处理器中连接步骤。
如何连接步骤
Section titled “如何连接步骤”创建步骤后,您可以将其连接至其他步骤。为此,我们使用名为 ProcessorBuilder 的构建器类来指定构成处理器的步骤序列。
- 实例化步骤后,需将其转换为 RunnableStep。RunnableStep 是封装步骤的 trait。它提供馈入步骤所需的输入和输出通道,并允许在任务中生成该步骤。SDK 提供辅助函数 .into_runnable_step,用于将步骤转换为 RunnableStep。
- 使用 ProcessorBuilder::new_with_inputless_first_step 设置第一个步骤。几乎所有情况下,第一个步骤都应为 TransactionStreamStep。
- 使用 .connect_to 将前一步连接至下一步。connect_to 使用 trait bound,确保前一步的输出类型在编译时与下一步的输入类型匹配。调用 .connect_to 时,会创建大小为 channel_size 的通道以连接前后两个步骤;同时生成一个任务,持续循环执行前一步:从输入通道读取数据,处理数据,并将输出发送至输出通道。
- 对处理器中的每一步重复第 3 步。
- 要结束 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 中的完整示例。
可视化处理器
Section titled “可视化处理器”连接步骤时,ProcessorBuilder 会在后台使用 petgraph 构建处理器步骤的图形表示。调用以下代码即可查看图的可视化表示:
let dot = processor_builder.graph.dot();println!("{}", dot);