protoactor

Features

protoactor docs
Actor Features Create actor from function/method Create actor from object factory Spawn actor with automatic/prefixed/specific name Props Settings Actor producer Mailbox producer Supervisor strategy Dispatcher Actor spawner Middleware Context Data Parent PID Self PID Sender PID Children PIDs Current message Current Actor Features Respond to sender Stash current message pending restart Spawn child actor with automatic/prefixed/specific name Stop/restart/resume children Set/push/pop actor behaviors (become/unbecome) Watch/unwatch actors Receive timeout ProcessRegistry Get Process by PID Add local Process with ID Remove Process by PID Generate next Process ID Process Send user message to Process Send system message to Process Stop Process Supervision Directives Resume Restart Stop Escalate Strategies OneForOneStrategy applies directive to failed child PID Features Holds address (nonhost or remote address) and ID Send user message Send system message Request Request future Stop Future process Auxiliary process used to provide an awaitable future containing the response to a request Dead letter process Auxiliary process used to collect messages sent to non-existing processes Routers Group routers route message to a specified set of routees Pool routers route messages to a set of routees of a specified size, and are created/managed by the router Broadcast routers routes a message to all routees Random routers routes a message to a random routee Consistent-hash routers routes a message to a routee deterministically Round-robin routers routes messages to routees in a round-robin fashion Consistent hash routers Routing is deterministic based on a hash computed by the message Uses a hash ring so that if a routee is unavailable, another will be chosen automatically, and when the routee is back it will be used again Broadcast routers Uses a special message RouterBroadcastMessage to route messages more efficiently when the routees are remote (? Read more...

Location Transparency

protoactor docs
Location Transparency The previous section describes how actor PIDs are used to enable location transparency. This special feature deserves some extra explanation, because the related term “transparent remoting” was used quite differently in the context of programming languages, platforms and technologies. Distributed by Default Everything in Proto.Actor is designed to work in a distributed setting: all interactions of actors use purely message passing and everything is asynchronous. This effort has been undertaken to ensure that all functions are available equally when running within a single actor system or on a cluster of hundreds of machines. Read more...

Messages

protoactor docs
Messages One of the most fundamental concepts to the Actor model is the notion of “message-driven systems,” as defined by the Reactive Manifesto: A message is an item of data that is sent to a specific destination. An event is a signal emitted by a component upon reaching a given state. In a message-driven system addressable recipients await the arrival of messages and react to them, otherwise lying dormant. Read more...

Proto.Actor Bootcamp

protoactor bootcamp dotnet series
Proto.Actor Bootcamp Get the sourcecode github.com/AsynkronIT/protoactor-bootcamp Welcome to Proto.Actor Bootcamp. It is a free course for self-study. This training course consists of nine main parts, during which you will learn how to create fully functional, real-world programs using Proto.Actor actors and many other components of the Proto.Actor Framework. We will start with the basics of actors and gradually approach more complex examples. This course is for self-study — you can do it at any pace you like. Read more...

Proto.Actor Bootcamp

protoactor docs
Module 1: Introduction to Actor Model and Proto.Actor Concepts you will learn Welcome to the course on building parallel applications based on the actor model and the Proto.Actor platform. Creating parallel, distributed, and robust applications is a complicated task. However, using the actor model and the Proto.Actor platform significantly simplifies this task. With Proto. Actor, you no longer have to worry about manually managing threads and locking shared resources. Instead, you will use high-level abstractions such as Actors and Messages. Read more...

Proto.Actor Documentation

protoactor docs
Proto.Actor Framework TLDR; Just show me the code! Hello World Getting Started Getting Started With Grains / Virtual Actors (.NET) Deploy to Kubernetes Introduction What is Proto.Actor? Why Proto.Actor Design Principles Features 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? Read more...

Proto.Cluster

protoactor docs
Proto.Cluster [Homage to Proto.Actors Swedish roots, Swedish midsummer ring dance - Connected Cluster Actors] Virtual Actors, aka. Grains Proto.Cluster leverages the “Virtual Actor Model”, which was pioneered by Microsoft Orleans. Unlike the traditional Actor Model used in Erlang or Akka, where developers must care about actor lifecycles, placement and failures. The virtual actor model instead focus on ease of use, high availability where most of the complexity have been abstracted away from the developer. Read more...

Scheduling

protoactor docs
Scheduling Messages In C#, we provide the SimpleScheduler implementation of the ISimpleSchedulerinterface. This allows you to do operations such as ScheduleTellOnce, ScheduleRequestOnce and ScheduleTellRepeatedly ISimpleScheduler scheduler = new SimpleScheduler(); var pid = context.Spawn(Actor.FromProducer(() => new ScheduleGreetActor())); scheduler .ScheduleTellOnce(TimeSpan.FromMilliseconds(100), context.Self, new SimpleMessage("test 1")) .ScheduleTellOnce(TimeSpan.FromMilliseconds(200), context.Self, new SimpleMessage("test 2")) .ScheduleTellOnce(TimeSpan.FromMilliseconds(300), context.Self, new SimpleMessage("test 3")) .ScheduleTellOnce(TimeSpan.FromMilliseconds(400), context.Self, new SimpleMessage("test 4")) .ScheduleTellOnce(TimeSpan.FromMilliseconds(500), context.Self, new SimpleMessage("test 5")) .ScheduleRequestOnce(TimeSpan.FromSeconds(1), context.Self, pid, new Greet("Daniel")) .ScheduleTellOnce(TimeSpan.FromSeconds(5), context.Self, new Hello()) . Read more...

Supervision

protoactor docs
Supervision This document outlines the concept behind supervision and what that means for your Proto.Actor actors at run-time. What Supervision means Supervision describes a dependency relationship between actors: the supervisor delegates tasks to subordinates and therefore must respond to their failures. When a subordinate detects a failure (i.e. throws an exception), it suspends itself and all its subordinates and sends a message to its supervisor, signaling failure. Depending on the nature of the work to be supervised and the nature of the failure, the supervisor has a choice of the following four options: Read more...

Terminology and Concepts

protoactor docs
Terminology and Concepts In this chapter we attempt to establish a common terminology to define a solid ground for communicating about concurrent, distributed systems which Proto.Actor targets. Please note that, for many of these terms, there is no single agreed definition. We simply seek to give working definitions that will be used in the scope of the Proto.Actor documentation. Concurrency vs. Parallelism Concurrency and parallelism are related concepts, but there are small differences. Read more...
Icon