kmailbox 0.1.2

A simple kafka mailbox
Documentation
use crate::{KafkaError, SendMail, smail_to_kafka_record};
use rdkafka::producer::FutureProducer;
use std::time::Duration;

/// 写邮箱
pub struct Writer {
    producer: FutureProducer,
}

impl Writer {
    pub(crate) fn new(producer: FutureProducer) -> Self {
        Writer { producer }
    }

    /// 写邮件
    pub async fn write<'a>(&self, name: &str, mut mail: SendMail<'a>) -> Result<(), KafkaError> {
        let record = smail_to_kafka_record(name, &mut mail);
        self.producer
            .send(record, Duration::from_secs(3))
            .await
            .map(|_| ())
            .map_err(|e| e.0)
    }
}