1

我正在尝试在 Rust 中实现以下流程: 线程流

  1. 条目 (JSON) 被提交给 Actix Web 侦听器并进行处理
  2. 条目被提交到“可观察队列”
  3. 通知 Actix Web 客户端
  4. 客户端将其发送(通过 HTTP)到后端。这可能会失败
  5. 如果失败,如果提交失败少于 10 次,则将条目交给“计时器”
  6. 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 目标的异步函数之一中发送给参与者。我如何最好地移交地址。全局变量似乎不是答案。

当前主要功能

非常感谢帮助

4

0 回答 0