Skip to main content

Effect Types

Typr Events generates code that works with different async/effect systems.

Available Effect Types​

EffectReturn TypeUse Case
BlockingTSynchronous code
CompletableFutureCompletableFuture<T>Async Java
MutinyUni<T>Quarkus
CatsIOIO[T]Cats Effect (Scala)
ZIOTask[T]ZIO (Scala)

Configuration​

val options = AvroOptions.default(...).copy(
effectType = EffectType.CompletableFuture // or Blocking, Mutiny, CatsIO, ZIO
)

Examples by Effect Type​

Blocking (Synchronous)​

// Producer - blocks until send completes
producer.send("order-123", event, headers);

// Consumer handler
public void handleOrderPlaced(String key, OrderPlaced event, StandardHeaders headers) {
// Process synchronously
}

CompletableFuture (Async Java)​

// Producer - returns immediately
CompletableFuture<RecordMetadata> future = producer.send("order-123", event, headers);
future.thenAccept(metadata -> log.info("Sent to partition {}", metadata.partition()));

// Can compose multiple sends
CompletableFuture.allOf(
producer.send("key1", event1, headers),
producer.send("key2", event2, headers)
).join();

Mutiny (Quarkus)​

// Producer
Uni<Void> result = producer.send("order-123", event, headers);
result.subscribe().with(
success -> log.info("Sent"),
failure -> log.error("Failed", failure)
);

// Consumer handler
public Uni<Void> handleOrderPlaced(String key, OrderPlaced event, Metadata metadata) {
return processAsync(event);
}

Cats Effect (Scala)​

// Producer
val result: IO[RecordMetadata] = producer.send("order-123", event, headers)

// Compose with other effects
for {
_ <- producer.send("key1", event1, headers)
_ <- producer.send("key2", event2, headers)
_ <- IO.println("Both sent")
} yield ()

ZIO​

// Producer
val result: Task[RecordMetadata] = producer.send("order-123", event, headers)

// ZIO composition
for {
_ <- producer.send("key1", event1, headers)
_ <- producer.send("key2", event2, headers)
_ <- ZIO.logInfo("Both sent")
} yield ()

Language Support​

Effect TypeJavaKotlinScala
BlockingYesYesYes
CompletableFutureYesYesYes
MutinyYesYes-
CatsIO--Yes
ZIO--Yes