actixを試す

この記事は nacika.com Rust記事 アドベントカレンダー Advent Calendar 2018 – Adventar の1日目の記事です。
日付跨いじゃってるけど・・・。

早速、actix/actix: Actor framework for Rust を試しました。

nacika-ins/actix-sample

使った感じ

現状だと、特に各アクターでスレッドを作ってくれるわけではないようで、どこかのアクターでloopを書いたりしてスレッドを専有してしまうと、他のアクターの処理が止まる。
panic!を書けばプロセスは落ちるし、エラーが発生してもプロセスごと落ちる。

impl Superviseddef restarting というメソッドがあり、エラーがあると呼ばれてリスタートするらしいんだけど、呼ばれない。。

メリットがありそうなところ

  • 耐障害性は、スレッドを作ってあげて処理すればなんとかなりそう。do_sendや、sendなどのメソッドは #[derive(Message)] をつけたものを送ればいいだけなので、複雑な所有権をあまり考えずに使えそうなところがよさそう。
  • スレッドループからもメッセージを送ることができるのでいい感じ。
  • アクターの変数も、メッセージ自体もミュータブルにすることができる。

今後使うか

正直、Rust言語の複雑な部分をActorでまとめることができてコード自体も簡潔にかける部分が良いので、今後使っていきたい。

カテゴリー: Rust