July 2025
Intermediate to advanced
284 pages
4h 4m
Japanese
アクタ(actor)(https://oreil.ly/RyPdG)は、メッセージパッシングのみで通信する、独立したコードだ。アクタは、参照し操作可能な状態を保持し、非同期のノンブロッキングなチャネルを持つ。非同期ランタイムで複数のアクタを管理して、チャネルからメッセージを受け取ったときだけアクタが処理を進めるように構成することが可能だ。
アクタは相互に隔離されているので、非同期システムを容易に構築し非同期にテストすることができる。本章を読めば、ルータアクタを持つアクタシステムを構築できるようになる。このアクタシステムは、アクタシステムへの参照を持ち回らなくても、プログラムのどこからでも簡単に呼び出すことができる。また、スーパバイザを持つハートビートシステムを構築できるようになる。このシステムは他のアクタを監視し一定期間の間スーパバイザにメッセージを送らなかったアクタを強制的に再起動することができる。この話を始める前に、まず基本的なアクタの構築方法について理解する必要がある。
実装可能な最も基本的なアクタは、無限ループでメッセージを受信し続ける非同期関数だ。
use tokio::sync::{ mpsc::channel, mpsc::{Receiver, Sender}, oneshot }; struct Message { value: i64 } async fn basic_actor(mut rx: Receiver<Message>) { let mut state = 0; while let Some(msg) = rx.recv().await { state += msg.value; println!("Received: ...Read now
Unlock full access