Simplicity at its core. Flexibility at its peak. Effortless messaging for .NET.
Silverback is a message bus and broker integration library to build event-driven architectures with first-class support for Apache Kafka and MQTT.
Documentation, guides, and samples are available at https://silverback-messaging.net.
Configure the broker connection, the producer and consumer endpoints, and a subscriber. Silverback takes care of serialization, headers, error handling and delivery.
services.AddSilverback()
.WithConnectionToMessageBroker(options => options.AddKafka())
.AddKafkaClients(clients => clients
.WithBootstrapServers("PLAINTEXT://localhost:9092")
.AddProducer(producer => producer
.Produce<OrderCreated>(endpoint => endpoint
.ProduceTo("orders")))
.AddConsumer(consumer => consumer
.WithGroupId("billing")
.Consume<OrderCreated>(endpoint => endpoint
.ConsumeFrom("orders")
.OnError(policy => policy.Retry(3).ThenSkip()))))
.AddSingletonSubscriber<OrderCreatedHandler>();// Publish: the message is routed to the "orders" topic
await publisher.PublishAsync(new OrderCreated(orderId));
// Consume: the subscriber is invoked for each consumed message
public class OrderCreatedHandler
{
public Task HandleAsync(OrderCreated message) => ...;
}Follow the Quickstart for a complete, runnable walkthrough.
- Kafka-first, not Kafka-only – a consistent, fluent API for Kafka and MQTT that still surfaces partitions, keys, tombstones and transactions.
- Reliable by design – transactional outbox, error policies (retry, skip, move) and storage-backed offsets and locks.
- Built for throughput – partition-based parallelism, batch processing, streaming and chunking of large payloads.
- Cross-cutting features – serialization, Schema Registry (JSON, Avro, Protobuf), headers, validation and end-to-end encryption.
- Observable – structured logging, distributed tracing via
System.Diagnosticsand health checks. - Testable – in-memory Kafka and MQTT brokers and testing helpers for fast and reliable end-to-end tests.
Silverback is modular – reference only what you need.
Core:
- Silverback.Core – message bus and core messaging components.
- Silverback.Core.Model – message semantics for event-driven/CQRS scenarios.
Broker integration:
- Silverback.Integration.Kafka – Kafka support.
- Silverback.Integration.MQTT – MQTT support.
Optional features:
- Silverback.Core.Rx – Rx.NET integration.
- Silverback.Integration.Newtonsoft – Newtonsoft.Json serialization.
- Silverback.Integration.Kafka.SchemaRegistry – Confluent Schema Registry integration (Avro, Protobuf and JSON).
- Silverback.Integration.HealthChecks – health checks for the consumers and the outbox.
Storage (for outbox, client-side offsets, distributed locks):
- Silverback.Storage.PostgreSql
- Silverback.Storage.Sqlite
- Silverback.Storage.EntityFramework
- Silverback.Storage.Memory
Testing:
- Silverback.Integration.Testing – broker-independent testing helpers.
- Silverback.Integration.Kafka.Testing – in-memory Kafka broker.
- Silverback.Integration.MQTT.Testing – in-memory MQTT broker.
Starting with v5, Silverback targets the latest .NET LTS (Long-Term Support) version only. It can run on newer compatible .NET versions (including STS releases), but older frameworks are no longer targeted or supported.
- Quickstart – produce and consume via Kafka in five minutes.
- Guides – setup, message bus, producing, consuming and more.
- Samples – runnable Kafka and MQTT examples.
- Migrating from v4 – step-by-step upgrade guide to Silverback 5.
- FAQ and Troubleshooting – answers to the most common questions.
- API Reference – the complete public API.
The v4 documentation is still available at silverback-messaging.net/v4.
| Solution | Contents |
|---|---|
| Silverback.slnx | Library source projects, unit and E2E tests, and code/documentation generators |
| Silverback.Samples.slnx | Runnable usage examples; see the samples guide |
| Silverback.Tests.Extended.slnx | Interactive testbench, real-broker integration and stress tests, general benchmarks and version comparisons, with references to the library sources |
| Tool | Purpose |
|---|---|
| Interactive testbench | Windows WPF application for producing messages and managing Docker consumers |
| Integration tests | xUnit tests against real Kafka and MQTT brokers, including stress workloads and diagnostic controls |
| Benchmarks | General performance benchmarks and current-versus-historical Silverback comparisons |
| UpdateOlderVersions.ps1 | Scaffold another historical benchmark project |
| coverage.ps1 | Build and test the main solution with coverage, then generate and open an HTML report |
| docker-compose.yaml | Local Kafka, Schema Registry, MQTT and PostgreSQL infrastructure, with administration UIs |
| nuget/Update.ps1 | Build local Silverback packages for package-based development and samples |
| .NET tool manifest | Repository-local ReportGenerator installation used by the coverage script |
The generator applications are included in the main solution. The configuration proxy generators write to standard output, while the
documentation generators write Markdown files to the directory passed as argument and are run by docs/build.ps1. Shared generator support
lives in Silverback.Tools.Generators.Common.
| Tool | Purpose |
|---|---|
| KafkaConfigProxies | Generate Kafka configuration wrappers and builders; also supports Schema Registry configuration |
| MqttConfigProxies | Generate MQTT configuration wrappers and builders |
| Docs.Headers | Generate message-header reference tables |
| Docs.LogEvents | Generate log-event reference tables |
| Docs.Contributors | Generate the contributors grid from the GitHub API |
| docs/build.ps1 | Build and serve the DocFX documentation locally; run from the docs directory |
| docs/publish.ps1 | Publish the generated site through a separate gh-pages checkout; supports -NoPush |
Build automation is defined in the main workflow, the Sonar workflow, the samples and extended tests build workflow and the nightly extended integration tests workflow.
- Issues – report bugs or suggest improvements.
- Discussions – ask questions and share ideas.
- CONTRIBUTING.md – how to contribute.
Silverback is open source, licensed under the MIT License and maintained by Sergio Aquilini. See LICENSE.