CAP
docs
CAP | docs | |
---|---|---|
7 | 6 | |
6,445 | 988 | |
0.6% | 0.0% | |
8.7 | 9.7 | |
8 days ago | about 22 hours ago | |
C# | HTML | |
MIT License | Creative Commons Attribution 4.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
CAP
-
Mechanism for managing faulty consumer in asynchronous event broadcast in microservices / modular monolith
You might want to implement the outbox pattern. There’s a decent library that’ll help and is really easy to integrate. In particular, I’d look at using the transaction functionality
- Consistência de dados e padrão Outbox
- Message Queueing
-
Is there MQ that is using only redis for dotnet?
This might be of interest https://cap.dotnetcore.xyz/
-
📦 Data consistency, outbox pattern and idempotency in a microservice architecture
There are many libraries in .NET that helps you implementing the outbox pattern like: MassTransit, NServiceBus, CAP. Talking about idempotency, a special mention to a specific lib from a big friend that runs on top of CAP which is called Ziggurat.
-
Which library do you use for message bus abstraction?
CAP is your friend https://github.com/dotnetcore/CAP
-
14 .NET packages I always recommend
Correct but I would actually consider CAP instead. The primary reason is that CAP implements the outbox pattern out-of-box where you would need to implement this yourself with Hangfire.
docs
-
Picking an architecture
I agree with the general sentiment here that you should try to keep things simple as long as possible. In addition to that, try to use frameworks such as Dapr, that allow you to postpone certain architectural decisions. Since Dapr runs everywhere where Kubernetes runs, it doesn't really matter which cloud provider you pick. Also, when it comes to pub/sub brokers, state stores, or secret stores, when using Dapr components you can easily swap those out.
-
Mechanism for managing faulty consumer in asynchronous event broadcast in microservices / modular monolith
I'm mostly familiar with orchestration type sagas, and there I usually include retries when calling services and compensation actions in case calls completely fail. It really helps if you're using a framework, such as Dapr, to do most of the heavy lifting. You can apply resiliency policies to service calls and with the latest version, there's now a Workflow API to orchestrate your services.
-
Service Mesh Considerations
One other option that is worth mentioning is Dapr. Dapr is a microservices building block that developers can use to develop microservices. There is a bit of overlap between Dapr and service meshes and the Dapr team has done a good job of comparing the two here. The biggest takeaway when comparing the two is that Dapr does not provide traffic routing/splitting. So if you need these capabilities, then yes, you will need a service mesh.
-
Virtual Actors : Dapr vs Orleans
There was a similar issue with the code examples to get/set state, so I created a GitHub issue for them.
-
Image Recognition App using GoLang | Tensorflow | WasmEdge | Dapr | Docker
It is an Image Recognition Application made using Go Language, works on a Tensorflow model and it requires Dapr and WasmEdge runtime for execution.
-
Tech Talks: Building Event-Driven Apps with Dapr in Kubernetes
Dapr Docs
What are some alternatives?
MassTransit - Distributed Application Framework for .NET
dapr-wasm - A template project to demonstrate how to run WebAssembly functions as sidecar microservices in dapr
Hangfire - An easy way to perform background job processing in .NET and .NET Core applications. No Windows Service or separate process required
Orleans.CosmosDB - Orleans providers for Azure Cosmos DB
NServiceBus - Build, version, and monitor better microservices with the most powerful service platform for .NET
jaeger - CNCF Jaeger, a Distributed Tracing Platform
Rebus - :bus: Simple and lean service bus implementation for .NET
dapr - Dapr is a portable, event-driven, runtime for building distributed applications across cloud and edge.
EasyNetQ - An easy to use .NET API for RabbitMQ
cloud-dapr-demo - Demo of Dapr runtime and seamless integration of cloud providers
Brighter - A framework for building messaging apps with .NET and C#.
zipkin - Zipkin is a distributed tracing system