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.sln | Library source projects, unit and E2E tests, and code/documentation generators |
| Silverback.Samples.sln | Runnable usage examples; see the samples guide |
| Silverback.Tests.Extended.sln | 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 four generator applications are included in the main solution and write generated content to standard output. 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/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 pipeline, the Sonar pipeline, and the samples/extended-tests pipeline.
- 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.