Tyto.Transports.RabbitMq
0.0.1-alpha.106
dotnet add package Tyto.Transports.RabbitMq --version 0.0.1-alpha.106
NuGet\Install-Package Tyto.Transports.RabbitMq -Version 0.0.1-alpha.106
<PackageReference Include="Tyto.Transports.RabbitMq" Version="0.0.1-alpha.106" />
<PackageVersion Include="Tyto.Transports.RabbitMq" Version="0.0.1-alpha.106" />
<PackageReference Include="Tyto.Transports.RabbitMq" />
paket add Tyto.Transports.RabbitMq --version 0.0.1-alpha.106
#r "nuget: Tyto.Transports.RabbitMq, 0.0.1-alpha.106"
#:package Tyto.Transports.RabbitMq@0.0.1-alpha.106
#addin nuget:?package=Tyto.Transports.RabbitMq&version=0.0.1-alpha.106&prerelease
#tool nuget:?package=Tyto.Transports.RabbitMq&version=0.0.1-alpha.106&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.0.1-alpha.106)
- Wiaoj.Concurrency (>= 0.1.0-alpha.3)
- Wiaoj.Primitives (>= 0.1.0-alpha.3)
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.0.1-alpha.106 | 36 | 9/15/2026 |
| 0.0.1-alpha.105 | 37 | 9/14/2026 |
| 0.0.1-alpha.104 | 49 | 9/10/2026 |
| 0.0.1-alpha.103 | 60 | 9/4/2026 |
| 0.0.1-alpha.102 | 54 | 9/1/2026 |
| 0.0.1-alpha.101 | 48 | 9/1/2026 |
| 0.0.1-alpha.100 | 68 | 8/24/2026 |
| 0.0.1-alpha.99 | 60 | 8/20/2026 |
| 0.0.1-alpha.98 | 61 | 8/18/2026 |
| 0.0.1-alpha.97 | 56 | 8/18/2026 |
| 0.0.1-alpha.96 | 79 | 8/18/2026 |
| 0.0.1-alpha.95 | 62 | 8/17/2026 |
| 0.0.1-alpha.94 | 60 | 7/21/2026 |
| 0.0.1-alpha.93 | 59 | 7/20/2026 |
| 0.0.1-alpha.92 | 61 | 7/20/2026 |
| 0.0.1-alpha.91 | 70 | 6/11/2026 |
| 0.0.1-alpha.90 | 79 | 6/4/2026 |
| 0.0.1-alpha.89 | 61 | 6/4/2026 |
| 0.0.1-alpha.88 | 66 | 5/17/2026 |
| 0.0.1-alpha.87 | 60 | 5/17/2026 |