producer/
producer.rs

1use s2_sdk::{
2    S2,
3    producer::ProducerConfig,
4    types::{AppendRecord, BasinName, S2Config, StreamName},
5};
6
7#[tokio::main]
8async fn main() -> Result<(), Box<dyn std::error::Error>> {
9    let access_token =
10        std::env::var("S2_ACCESS_TOKEN").map_err(|_| "S2_ACCESS_TOKEN env var not set")?;
11    let basin_name: BasinName = std::env::var("S2_BASIN")
12        .map_err(|_| "S2_BASIN env var not set")?
13        .parse()?;
14    let stream_name: StreamName = std::env::var("S2_STREAM")
15        .map_err(|_| "S2_STREAM env var not set")?
16        .parse()?;
17
18    let s2 = S2::new(S2Config::new(access_token))?;
19    let stream = s2.basin(basin_name).stream(stream_name);
20
21    let producer = stream.producer(ProducerConfig::new());
22
23    let ticket1 = producer.submit(AppendRecord::new("lorem")?).await?;
24    let ticket2 = producer.submit(AppendRecord::new("ipsum")?).await?;
25
26    let ack1 = ticket1.await?;
27    let ack2 = ticket2.await?;
28    println!("Record 1 seq_num: {}", ack1.seq_num);
29    println!("Record 2 seq_num: {}", ack2.seq_num);
30
31    producer.close().await?;
32
33    Ok(())
34}