我正在尝试在 Rust 中实现以下流程:
- 条目 (JSON) 被提交给 Actix Web 侦听器并进行处理
- 条目被提交到“可观察队列”
- 通知 Actix Web 客户端
- 客户端将其发送(通过 HTTP)到后端。这可能会失败
- 如果失败,如果提交失败少于 10 次,则将条目交给“计时器”
- 30 秒后,计时器将条目重新提交到队列中,并且流程在 3 处恢复
我使用vert.x和 Java(GitHub 项目)解决了这个问题,并希望将其用作学习 Rust 的示例项目。
更新:
找到了actix 文档并实现了 Actix::Actor,它涵盖了 1->4
use crate::comments_entry::BlogSubmission;
use actix::prelude::*;
pub struct CommentStore {}
impl Actor for CommentStore {
type Context = Context<Self>;
}
impl Handler<BlogSubmission> for CommentStore {
type Result = String;
fn handle(&mut self, _msg: BlogSubmission, _ctx: &mut Context<Self>) -> Self::Result {
// Here goes #4 send to backebd
println!("{:?}", _msg);
"It worked".to_string()
}
}
这大大缩小了我的问题:
- 如何构建延迟计时器?
- 当我在我的
main()
方法中启动演员时,它也使用let c_store = CommentStore::start(CommentStore {});
我在c_store
. 但是,我需要在指定为 Route 目标的异步函数之一中发送给参与者。我如何最好地移交地址。全局变量似乎不是答案。
当前主要功能
非常感谢帮助