Effect Types
Typr Events generates code that works with different async/effect systems.
Available Effect Typesβ
| Effect | Return Type | Use Case |
|---|---|---|
Blocking | T | Synchronous code |
CompletableFuture | CompletableFuture<T> | Async Java |
Mutiny | Uni<T> | Quarkus |
CatsIO | IO[T] | Cats Effect (Scala) |
ZIO | Task[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 Type | Java | Kotlin | Scala |
|---|---|---|---|
| Blocking | Yes | Yes | Yes |
| CompletableFuture | Yes | Yes | Yes |
| Mutiny | Yes | Yes | - |
| CatsIO | - | - | Yes |
| ZIO | - | - | Yes |