Class IntakeRepoEventConsumer

java.lang.Object
ai.pipeline.connector.intake.service.IntakeRepoEventConsumer

@ApplicationScoped public class IntakeRepoEventConsumer extends Object
Consumes IntakeRepoEvent messages and initiates intake handoff.
  • Constructor Details

    • IntakeRepoEventConsumer

      public IntakeRepoEventConsumer()
  • Method Details

    • consumeIntakeRepoEvents

      public CompletionStage<Void> consumeIntakeRepoEvents(org.eclipse.microprofile.reactive.messaging.Message<ai.pipestream.events.v1.IntakeRepoEvent> message)
      @RunOnVirtualThread tells SmallRye Reactive Messaging to dispatch each incoming Kafka record on its own virtual thread instead of the Vert.x event loop. The handler body calls EngineClient.handoffReferenceToEngine(String, String, String, String, IngestionConfig) which does a synchronous CompletableFuture.get() on the engine gRPC response — without this annotation, that .get() blocks the event loop and Vert.x fires BlockedThreadChecker after 2s. On a virtual thread the blocking call parks without pinning a carrier thread, so it's safe.

      Same shape SmallRye accepts for @Incoming as Mutiny (Uni<Void>) and plain async (CompletionStage<Void>); we keep CompletionStage<Void> so the explicit Message.ack() / Message.nack(Throwable) calls drive Kafka offset commits with the same skip-and-ack semantics for unsupported event types.