#actor-system #actor #stream

uactor

The fastest and most modular actor system that doesn't force you to pay for what you don't need

24 releases (11 breaking)

new 0.12.1 Nov 24, 2024
0.11.0 Aug 23, 2024
0.10.1 Jun 21, 2024
0.8.1 Feb 7, 2024

#13 in #actor-system

MIT license

58KB
1.5K SLoC

uActor

Overview

The fastest and most modular actor system that doesn’t force you to pay for what you don’t need

Examples

Examples can be found here.

Features

  1. Simplified creation of a tokio actor topic oriented actor
  2. Minimum boilerplate code
  3. Support different tokio channels including watch, broadcast, oneshot, mpsc.
  4. Each actor is able to listen up to 30 channels.
  5. Added support of actors with single real channel and routing messages to the defined handler
    Example: Single channel
  6. Added tick (actor call each n seconds/millis/etc) support
    Example: Interval
  7. Implemented Dependency Injection on pre-start stage to solve cross-references problem ("Actor#1" needs a reference to the "Actor#2", and "Actor#2" needs a reference to "Actor#1")
    Example: dependency injection
  8. Integration with tokio/tracing, including tracing of actor lifecycle, messages, and handlers
  9. Implemented support for actors for which it is necessary to work with multiple message sources (channels) Example: Multi channel
  10. Implemented shared state for actors Example: Shared state

Actor lifecycle

Lifecycle.png

Other projects:

  1. Actix
  2. Ractor
  3. Tokactor
  4. tiny-tokio-actor

License

This project is licensed under the MIT license.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in uActor by you, shall be licensed as MIT, without any additional terms or conditions.

TODO

  • Реализовать логируемый актор (tracing)
    • Реализовать логирование handler'ов
    • Добавить скрин uptrace с графом акторов
    • Реализовать проброску parent_id
  • Реализовать datasaource tcp stream
  • Реализовать кластеризацию акторов. То есть, возможность запускать акторы на разных машинах и общаться между собой
  • Реализовать мониторинг акторов
  • Реализовать метрики акторов
  • Реализовать управление акторами через HTTP API

Dependencies

~4–12MB
~137K SLoC