Proto.Actor Framework
TLDR; Just show me the code!
- Hello World
- Getting Started
- Getting Started With Grains / Virtual Actors (.NET)
- Deploy to Kubernetes
Introduction
Concepts
- What is an Actor?
- What is a Message?
- Terminology, Concepts
- Supervision and Monitoring
- Actor lifecycle
- Location Transparency
- Message Delivery Reliability
Building Blocks
Core Features
-
Actor - What are actors?
- Props - How do I configure actors?
- Spawning Actors - How do I instantiate actors?
- PID - How do I communicate with actors?
-
Context - What are actor and root contexts?
- ReenterAfter - How do I handle reentrancy in actors?
- Mailboxes - How does the actor process messages?
- Deadletter - What happens to lost messages?
- Router - How do I forward messages to to pools or groups of workers?
- Eventstream - How are infrastructure events managed?
- Behaviors - How do I build state machines with actors?
- Middleware - How do I intercept or observe messages between actors?
- Receive Timeout - How do I trigger code when actors go idle?
- Futures (Go) - How do I react to task completions?
- Dispatchers - How do I tweak how and where actors execute?
- Dependency Injection (.NET) - How do I configure actors using Dependency Injection?
- Dealing with deadlocks
-
Persistence of actor’s state - How do I persist state for actors?
- Using 3rd party libraries - How do I persist state using external libraries?
-
Remote - How do I communicate with actors on other nodes?
- Message Serialization
- Remote Spawning - How do I spawn actors on other nodes?
- gRPC Compression - How do I use gRPC compression for remote communication?
-
Cluster of virtual actors / grains - How do I build clusters of grains / virtual actors?
- Working with a cluster (.NET)
- Generating grains (.NET)
- Cluster providers (.NET) - What different clustering options do I have?
- Identity lookup (.NET) - How to locate a virtual actor?
- Member strategies (.NET) - Which member will host the virtual actor?
- Gossip - How can I share state across cluster members?
- Blocklist - How do I handle blocked status of a member?
- Cluster Pub-Sub - Experimental - How to broadcast messages in the cluster?
- Virtual Actors - How do I create virtual actors and spawn them in the cluster?
- Integration Testing - How do I integration-test virtual actors?
- SimpleScheduler - How do I send messages on a timer?
- Built in messages
Utility features
- AsyncSemaphore - How do I limit concurrency to a given resource?
- BatchingMailbox - How do I collect many events and process as single one unit?
- Throttle - How do I throttle method calls?
Performance
Observability
Extension models
Articles
Useful Patterns
- Message Throttling
- Work Pulling Pattern
- Limit Concurrency
- Scheduling Periodic Messages
- Envelope Pattern
- Local Affinity
- Placement Strategies
- Coordinated Persistence
- Batched Persistence