Class PipelineEventsConsumer
pipeline-events audit stream — the SAME StepExecutionRecord
stream opensearch-manager indexes — and folds each record into
RichObservationCollector, keyed by crawl_id.
This is the one Kafka subscriber in the sidecar. It sees every crawl's
records platform-wide, so it folds ONLY records whose crawl_id has an
open run (ActiveCrawlRegistry); everything else is dropped, keeping
the collector bounded to live runs (and making auto.offset.reset=earliest
harmless — replayed history has no active runs).
Serialization is fully handled by the quarkus-apicurio-registry-protobuf
extension: it auto-configures the channel (connector, topic pipeline-events,
UUID key deserializer, protobuf value deserializer, offset, ignore-failure). The
record key is the engine's stream UUID; we don't use it.
One (crawl, node, doc) resolves to exactly one outcome — the engine
emits a rich success record AND a separate NO_OP/REJECT disposition record for
the same doc, so RichObservationCollector classifies exclusively with
precedence reject > no-op > processed (order-independent).
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidonStepRecord(io.smallrye.reactive.messaging.kafka.Record<UUID, ai.pipestream.data.v1.StepExecutionRecord> record) Fold one audit record into the observation collector for its crawl.
-
Constructor Details
-
PipelineEventsConsumer
public PipelineEventsConsumer()Default constructor for CDI.
-
-
Method Details
-
onStepRecord
public void onStepRecord(io.smallrye.reactive.messaging.kafka.Record<UUID, ai.pipestream.data.v1.StepExecutionRecord> record) Fold one audit record into the observation collector for its crawl.- Parameters:
record- Kafka record: UUID stream key + theStepExecutionRecordvalue
-