Expand description

Kafka event stream for consuming events for Thalo apps.

For more information on watching events with Kafka, see spawn_event_handlers.

Example

use thalo_kafka::spawn_event_handlers;

use crate::projections::{BankAccountProjection, AssetsProjection};

mod projections;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    tracing_subscriber::fmt().init();

    let kafka_host = std::env::var("KAFKA_HOST").expect("missing kafka_host env var");
    let database_url = std::env::var("DATABASE_URL").expect("missing database_url env var");
     
    let db = Database::connect(&database_url).await?;

    let handles = spawn_event_handlers!(
        kafka_host,
        ("bank-account", BankAccountProjection::new(db.clone())),
        ("assets", AssetsProjection::new(db)),
    );
     
    for handle in handles {
        handle.await??;
    }

    Ok(())
}

Macros

Spawn multiple event handlers in separate tokio tasks and returns a vector of the join handles.

Structs

A wrapper around rdkafka::ClientConfig for convenience.

A message received from Kafka including the event and raw Kafka message.

An event stream consuming from kafka.

Enums

Error enum.

Traits

A Kafka topic.

Watch an event handler and apply incoming events.