#actor-framework #actor #async #tokio #future #events

nightly xtor

Rust的异步Actor框架,速度快且稳定可靠

2 个版本

0.9.10 2022年5月30日
0.9.0 2022年5月12日

#947 in 异步

MIT 许可证

51KB
1K SLoC

XTor:一个异步Actor框架处理程序。

CI Crates

关键特性

  • 小巧:非常小的代码库
  • 异步:允许你在Actor中编写异步代码
  • 功能齐全:我们内置了如 Supervisor Broker Caller 等类型
  • 既动态又快速:有类型消息和弱类型事件。

用法

xtor 添加到你的库中

cargo add xtor

编写一些代码

use anyhow::Result;
use async_trait::async_trait;
use xtor::actor::{context::Context, message::Handler, runner::Actor};

// first define actor
struct HelloActor;
impl Actor for HelloActor {}

// then define message
#[xtor::message(result = "()")]
#[derive(Debug)]
struct Hello;

// then impl the handler
#[async_trait]
impl Handler<Hello> for HelloActor {
    async fn handle(&self, _ctx: &Context, msg: Hello) -> Result<()> {
        println!("{:?} received", &msg);
        Ok(())
    }
}

// main will finish when all actors died out.
#[xtor::main]
async fn main() -> Result<()> {
    let hello_actor = HelloActor;
    let hello_actor_address = hello_actor.spawn().await?;
    hello_actor_address.call::<HelloActor, Hello>(Hello).await
}

项目结构

  • src/actor/* 用于纯异步Actor实现
  • src/utils/* 用于工具、特性和默认实现,例如
    • DefaultBroker
    • DefaultSupervisor
    • Service

参考

依赖

~4–12MB
~109K SLoC