Skip to content
Emit logo

Emit

Reliable, ordered messaging for .NET. Batteries included.

The problem worth solving

Your service just processed a pizza order. You saved it to the database and, in the same breath, tried to publish an event to a message broker. The publish failed. Your database says the order exists. The kitchen heard nothing. Somewhere, a hungry customer is waiting.

This is the dual-write problem, and it corrupts systems in ways that are particularly fun to debug at 2am.

How Emit solves it

Emit is a .NET library for reliable, ordered messaging between services. At its core is the transactional outbox pattern: messages are written to a database table inside the same transaction as your business data, then delivered by a background worker that retries until the broker confirms. Your handler commits everything or nothing.

The outbox is one of several tools Emit provides. An in-process mediator, distributed coordination primitives, and deep Kafka integration all share the same layered middleware pipeline, so cross-cutting concerns like transactions, retries, and observability apply uniformly across every subsystem.

Works with

What’s in the box

Transactional outbox with durable, ordered delivery and automatic retries. Messages never go missing because a broker hiccupped at the wrong moment.

In-process mediator for typed request/response dispatch. Useful for CQRS handlers that also need to publish events.

Kafka integration with typed producers, consumer groups, fan-out, content-based routing, dead-letter queues, circuit breakers, and rate limiting.

Pluggable persistence across MongoDB and PostgreSQL. You bring your own client; Emit handles the rest.

Cluster coordination with leader election for daemon scheduling and distributed locks available to your own code.

Observability through distributed tracing with W3C propagation, per-subsystem metrics, and structured logging throughout.

Next steps

Ready to try it? Head to the installation guide and have a working outbox in minutes.

Emit is released under the Apache 2.0 License.