如何创建一个等待多个消息或超时的actor?

时间:2019-06-03 16:15:36

标签: rust rust-actix actix-web

我使用MongoDB,Actix和Actix-Web。我有一个POST路由,可以接收一些数据;我解析这些数据,并将其发送给Actix actor,后者将其插入MongoDB。

出于性能方面的考虑,我想修改此actor以获取与以前相同的数据,并等待一定的时间或请求,然后批量插入所有数据。

#[derive(Message)]
pub struct BsonObject {
    pub bson: mongodb::Bson,
}

pub struct DbExecutor {
    pub db: Arc<DatabaseInner>,
}

impl Actor for DbExecutor {
    type Context = Context<Self>;
}

impl Handler<BsonObject> for DbExecutor {
    type Result = ();

    fn handle(&mut self, msg: BsonObject, _: &mut Self::Context) -> Self::Result {
        let bson = msg.bson;
        match bson {
            mongodb::Bson::Null => eprintln!("cannot insert Null"),
            _ => {
                let _res = insert_record(self.db.clone(), bson);
            }
        };
    }
}

我该怎么做?

0 个答案:

没有答案