Conectar Pasos
Prerrequisito
Sección titulada «Prerrequisito»A este punto, ya habrías seguido las guías Crear un Procesador y Crear un Paso. Nuestro siguiente objetivo es juntar esas dos piezas y conectar pasos dentro del procesador.
Cómo conectar pasos
Sección titulada «Cómo conectar pasos»Ahora que has creado un paso, puedes conectarlo a otros pasos.
Para hacer esto, usamos una clase builder llamada ProcessorBuilder para especificar una secuencia de pasos que componen un procesador.
- Después de que hayas instanciado tus pasos, necesitas convertirlos en
RunnableStep.RunnableStepes un trait que envuelve alrededor de un paso. Proporciona los canales de entrada y salida necesarios que alimentan al paso y permite que el paso sea spawneado en una tarea. El SDK proporciona una función helper.into_runnable_steppara convertir un paso en unRunnableStep. - Configura tu primer paso con
ProcessorBuilder::new_with_inputless_first_step. En casi todos los casos, el primer paso debería ser unTransactionStreamStep. - Conecta el paso anterior al siguiente paso usando
.connect_to.connect_tousa trait bounds para asegurar en tiempo de compilación que el tipo de salida del paso anterior coincide con el tipo de entrada del siguiente paso. Al llamar.connect_to, se crea un canal con tamañochannel_sizey conecta los pasos anterior y siguiente. También spawnea una tarea que continuamente hace loop del paso anterior — leyendo datos de su canal de entrada, procesando los datos, y enviando la salida a su canal de salida. - Repite el paso 3 para cada paso en tu procesador.
- Para cerrar el
ProcessorBuilder, usa.end_and_return_output_receiver. Esto devuelve unInstrumentedAsyncReceiverque puedes usar para procesar la salida del último paso en el grafo.
Aquí hay un ejemplo simple de conectar dos pasos:
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);Aquí hay un ejemplo completo de aptos-indexer-processor-example.
Visualizar el procesador
Sección titulada «Visualizar el procesador»Mientras conectas pasos, ProcessorBuilder en el fondo está construyendo una representación gráfica de los pasos en tu procesador usando petgraph.
Puedes ver la representación visual del grafo llamando
let dot = processor_builder.graph.dot();println!("{}", dot);Esto producirá un grafo en el lenguaje DOT que puedes visualizar usando herramientas como Graphviz.