Как создать актера, который ожидает нескольких сообщений или тайм-аута?
Я использую MongoDB, Actix и Actix-Web. У меня есть маршрут POST, который получает некоторые данные; Я анализирую эти данные и отправляю их актеру Actix, который вставляет их в MongoDB.
Из соображений производительности я хотел бы изменить этот актер так, чтобы он получал те же данные, что и раньше, и ожидал определенного количества времени или запросов, а затем массово вставлял все данные.
#[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);
}
};
}
}
Как я могу это сделать?