dotnetcore/cap

Distributed transaction solution in micro-service base on eventually consistency, also an eventbus with Outbox pattern

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 10 minutes ago
Added to GitGenius on September 9th, 2026
Created on December 14th, 2016
Open Issues & Pull Requests: 8 (+0)
GitHub issues: Enabled
Number of forks: 1,335
Total Stargazers: 7,111 (+0)
Total Subscribers: 297 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 10.4 hours
Mean response time: 6.0 days
90th percentile: 12.0 days
Tracked items: 178

How this project is maintained

Around half of the issues opened in the past year never receive a reply. Work labelled "question" is answered fastest, typically in about 5 hours, while "fixed" waits about 2 days. Only 14% of issues opened in the past year have been closed. Three people close 88% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 2
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 33 days
Stale 30+ days: 1
Stale 90+ days: 0

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • question (41)
  • fixed (36)
  • help wanted (27)
  • enhancement (26)
  • bug (21)
  • duplicate (5)
  • wontfix (4)
  • invalid (2)

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

CAP is a .NET library that provides distributed transaction support and event bus functionality for microservice architectures based on eventual consistency.

CAP solves the problem of ensuring message reliability in distributed systems where services communicate through events. When a service publishes an event, network failures or crashes can cause messages to be lost. The tool addresses this by implementing the Outbox Pattern, storing messages in a local database table alongside your application data before they are sent to a message queue. This guarantees atomicity: either both the business transaction and the message are persisted, or neither is. Failed message deliveries are automatically retried, ensuring no events are lost during system communication failures.

Teams building microservice systems where event-driven communication is essential should consider CAP, particularly those using .NET and needing guaranteed message delivery without complex distributed transaction logic. The tool works well for systems requiring both transactional consistency across services and decoupled event publishing. It supports multiple message transports including RabbitMQ, Kafka, and Azure Service Bus, and integrates with various databases such as SQL Server, PostgreSQL, and MongoDB. Beyond core transaction guarantees, the tool offers practical features like delayed message publishing, wildcard topic subscriptions, consumer groups for load balancing, and configurable parallel or sequential message processing. A built-in dashboard provides visibility into message status and manual retry capabilities, while OpenTelemetry support enables distributed tracing across your system.

The project maintains active development with regular updates addressing both core functionality and operational concerns. The codebase shows consistent refinement of the message processing pipeline and storage layer. The maintainers actively expand transport and database provider support to accommodate diverse infrastructure choices. Documentation and examples receive ongoing attention to help developers integrate the tool into existing systems. The project demonstrates responsiveness to issues and pull requests, indicating engagement with the user community.