Tyto.Transports.RabbitMq
0.1.0-alpha.11
dotnet add package Tyto.Transports.RabbitMq --version 0.1.0-alpha.11
NuGet\Install-Package Tyto.Transports.RabbitMq -Version 0.1.0-alpha.11
<PackageReference Include="Tyto.Transports.RabbitMq" Version="0.1.0-alpha.11" />
<PackageVersion Include="Tyto.Transports.RabbitMq" Version="0.1.0-alpha.11" />
<PackageReference Include="Tyto.Transports.RabbitMq" />
paket add Tyto.Transports.RabbitMq --version 0.1.0-alpha.11
#r "nuget: Tyto.Transports.RabbitMq, 0.1.0-alpha.11"
#:package Tyto.Transports.RabbitMq@0.1.0-alpha.11
#addin nuget:?package=Tyto.Transports.RabbitMq&version=0.1.0-alpha.11&prerelease
#tool nuget:?package=Tyto.Transports.RabbitMq&version=0.1.0-alpha.11&prerelease
Tyto.Transports.RabbitMq
RabbitMQ transport for Tyto. Publishes and consumes over AMQP with a pooled channel model, automatic topology declaration, retry-then-dead-letter, and OpenTelemetry.
Install
dotnet add package Tyto.Transports.RabbitMq
Usage
builder.AddTyto(tyto => {
tyto.MessageDefinitions(d => d.Add<PlaceOrder>("place-order", 1));
tyto.Transports(t => t.AddRabbitMq("rabbitmq", cfg => {
cfg.Connection("amqp://guest:guest@localhost:5672/");
cfg.Topology(topo => {
topo.Exchange("orders-exchange", "fanout");
topo.Queue("orders");
topo.Bind("orders", "orders-exchange");
});
cfg.Consumers(c => {
c.DefaultPrefetchCount = 100;
c.DefaultConcurrencyLimit = 2; // consumers per queue
c.MaxRetryCount = 5; // retries before dead-letter
c.PerQueueSettings["orders"] = new() { ConcurrencyLimit = 8, MaxRetryCount = 3 };
});
}));
tyto.Endpoints(e => e.Add("orders-endpoint", ep => {
TransportEndpoint queue = new() { TransportName = "rabbitmq", Address = "orders" };
ep.ListenOn(queue);
ep.Routing.Send<PlaceOrder>().To(new TransportEndpoint {
TransportName = "rabbitmq", Address = "orders-exchange", RoutingKey = "place-order"
});
ep.AddHandlersFromAssembly(typeof(PlaceOrder).Assembly);
}));
});
The declared topology (exchanges/queues/bindings) is created at startup by the topology
manager. For sends, Address is the exchange and RoutingKey the routing key.
Retries & dead-lettering
On a handler failure the message is republished to the same queue with an incremented
Tyto-Retry-Count header (and the original is acked), until MaxRetryCount is reached.
At the limit it is dropped — and, if Tyto.DeadLettering
is registered, reported to your dead-letter store first.
The dead-letter record captures the full failure context — reason, attempts, and the exception (type / message / stack).
Ordering caveat: in-place retry republishes to the same queue, so a failing message may be reordered relative to newer messages. This is the trade-off for transport-agnostic retry-then-dead-letter (vs. relying on RabbitMQ DLX + TTL).
Observability (OpenTelemetry)
Meter and ActivitySource are both named Tyto.Transports.RabbitMq.
tracing.AddSource("Tyto.Transports.RabbitMq");
metrics.AddMeter("Tyto.Transports.RabbitMq");
Traces: rabbitmq.send, rabbitmq.receive. Counters: published, received,
completed, rejected; histogram: processing.duration. Logs are source-generated.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Polly (>= 8.6.5)
- RabbitMQ.Client (>= 7.2.0)
- Tyto.DependencyInjection (>= 0.1.0-alpha.11)
- Wiaoj.Concurrency (>= 0.3.0-alpha.1)
- Wiaoj.Primitives (>= 0.3.0-alpha.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-alpha.11 | 49 | 10/5/2026 |
| 0.1.0-alpha.10 | 64 | 10/1/2026 |
| 0.1.0-alpha.9 | 67 | 9/27/2026 |
| 0.1.0-alpha.8 | 56 | 9/26/2026 |
| 0.1.0-alpha.7 | 59 | 9/25/2026 |
| 0.1.0-alpha.6 | 61 | 9/24/2026 |
| 0.1.0-alpha.5 | 60 | 9/21/2026 |
| 0.1.0-alpha.4 | 66 | 9/20/2026 |
| 0.1.0-alpha.3 | 67 | 9/20/2026 |
| 0.1.0-alpha.2 | 63 | 9/20/2026 |
| 0.1.0-alpha.1 | 57 | 9/20/2026 |
| 0.0.1-alpha.106 | 61 | 9/15/2026 |
| 0.0.1-alpha.105 | 58 | 9/14/2026 |
| 0.0.1-alpha.104 | 68 | 9/10/2026 |
| 0.0.1-alpha.103 | 75 | 9/4/2026 |
| 0.0.1-alpha.102 | 68 | 9/1/2026 |
| 0.0.1-alpha.101 | 63 | 9/1/2026 |
| 0.0.1-alpha.100 | 80 | 8/24/2026 |
| 0.0.1-alpha.99 | 74 | 8/20/2026 |
| 0.0.1-alpha.98 | 72 | 8/18/2026 |