Actix-Rust的Actor异步并发框架
Actix基于Tokio和Future,开箱具有异步非阻塞事件驱动并发能力,其实现低层级Actor模型来提供无锁并发模型,而且同时提供同步Actor,具有快速、可靠,易可扩展。
Actix之上是高性能Actix-web框架,很容易上手。使用Actix-web开发的应用程序将在本机可执行文件中包含HTTP服务器。你可以把它放在另一个像gix这样的HTTP服务器上。但即使完全不存在另一个HTTP服务器(像gix)的情况下,Actix-web也足以提供HTTP1和HTTP2支持以及SSL/TLS。这对于构建微服务分发非常有用。
特性:
异步/同步actors
Actor在本地/线程上下文中通信
使用 Futures 进行异步消息处理
支持HTTP1/HTTP2(actix-web)
Actor监控
类型化消息(No Ay type)
示例
exter crate actix;exter crate futures;exter crate tokio;use actix::prelude::*;use futures::Future;/// Defie `Pig` messagestruct Pig(usize);impl Message for Pig { type Result = usize;}/// Actorstruct MyActor { cout: usize,}/// Declare actor ad its cotextimpl Actor for MyActor { type Cotext = Cotext;}/// Hadler for `Pig` messageimpl Hadlerfor MyActor { type Result = usize; f hadle(&mut self, msg: Pig, _: &mut Cotext) -> Self::Result { self.cout += msg.0; self.cout }}f mai() { // start system, this is required step System::ru(|| { // start ew actor let addr = MyActor { cout: 10 }.start(); // sed message ad get future for result let res = addr.sed(Pig(10)); // hadle() returs tokio hadle tokio::spaw( res.map(|res| { pritl!("RESULT: {}", res == 20); // stop system ad exit System::curret().stop(); }).map_err(|_| ()), ); });}
评论