我使用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);
}
};
}
}
我该怎么做?