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
.RunnableStep
es 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_step
para 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_to
usa 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_size
y 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 unInstrumentedAsyncReceiver
que 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.