Akka.NET is a radically different way of developing concurrent and networked applications in .NET, and so it's important to have a number of high quality reference applications developers can explore in order to better understand how to design and model software using Actors and Akka.NET.
The goals of this repository are to provide users with shovel-ready Akka.NET samples that follow "Pit of Success" paradigms for the following areas:
- Akka.NET features: Persistence, Clustering, and Streams;
- Integrating Akka.NET with other popular technologies: RabbitMQ, Apache Kafka, and more; and
- Deploying Akka.NET into popular and common deployment environments: Kubernetes, Azure, AWS, and more.
These samples aren't designed to teach how to model complex domains using actors - they are pimarily designed to demosntrate copy-and-pasteable approaches to running AKka.NET infrastructure correctly and succinctly.
- Akka.NET Cluster.Sharding with Akka.Persistence.SqlServer and Razor Pages
- Akka.Streams.Amqp.RabbitMQ with Akka.Cluster.Sharding - Reliable Delivery + Backpressure Support
We accept pull requests for new samples or changes to existing ones, but we maintain a strict quality standard;
- All samples should be framed as self-hosted services and should rely on https://github.com/akkadotnet/Akka.Hosting for management of the
ActorSystem
; - Samples that require multiple nodes to operate should, ideally, be run inside of Kubernetes or
docker compose
; - Each sample needs a complete
README.md
that explains what the sample does, what a user needs to run it, and a what types of steps they need to execute it; - If a sample requires Kubernetes or
docker compose
then a.cmd
and.sh
script must be provided to setup the infrastructure and another to tear it down; - Samples should not ship with a full blown
nuke
build system - that's overkill; - All samples should reference a single
Directory.Build.props
file (it's already in this repository, don't add a new one) which will determine the version of Akka.NET, Akka.Hosting, ASP.NET, .NET Runtime, and Microsoft.Extensions.* used; - The samples should be contained in their own solution files, rather than one giant one; and
- Samples should be coherently organized by folder.
Please create a Github issue for any questions you might have.
All source code is licensed under the language of Apache 2.0. See LICENSE for more details.
All of the visuals used to explain our samples are licensed under Creative Commons Attribution 4.0 International.
You are free to modify and use these diagrams in your own derivative works as long as you comply with the text of the Creative Commons Attribution 4.0 International license.
Petabridge is a company dedicated to making it easier for .NET developers to build distributed applications.
Petabridge provides Akka.NET consulting and training, including advanced training in Akka.Remote, Akka.Cluster, and Akka.NET Design Patterns!
Copyright 2015 - 2022 Petabridge, LLC