Class IntakeRepoEventConsumer
java.lang.Object
ai.pipeline.connector.intake.service.IntakeRepoEventConsumer
Consumes IntakeRepoEvent messages and initiates intake handoff.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionconsumeIntakeRepoEvents(org.eclipse.microprofile.reactive.messaging.Message<ai.pipestream.events.v1.IntakeRepoEvent> message) @RunOnVirtualThreadtells SmallRye Reactive Messaging to dispatch each incoming Kafka record on its own virtual thread instead of the Vert.x event loop.
-
Constructor Details
-
IntakeRepoEventConsumer
public IntakeRepoEventConsumer()
-
-
Method Details
-
consumeIntakeRepoEvents
public CompletionStage<Void> consumeIntakeRepoEvents(org.eclipse.microprofile.reactive.messaging.Message<ai.pipestream.events.v1.IntakeRepoEvent> message) @RunOnVirtualThreadtells SmallRye Reactive Messaging to dispatch each incoming Kafka record on its own virtual thread instead of the Vert.x event loop. The handler body callsEngineClient.handoffReferenceToEngine(String, String, String, String, IngestionConfig)which does a synchronousCompletableFuture.get()on the engine gRPC response — without this annotation, that.get()blocks the event loop and Vert.x firesBlockedThreadCheckerafter 2s. On a virtual thread the blocking call parks without pinning a carrier thread, so it's safe.Same shape SmallRye accepts for
@Incomingas Mutiny (Uni<Void>) and plain async (CompletionStage<Void>); we keepCompletionStage<Void>so the explicitMessage.ack()/Message.nack(Throwable)calls drive Kafka offset commits with the same skip-and-ack semantics for unsupported event types.
-