Pulse.Mqtt.Endpoints
2.29.0
dotnet add package Pulse.Mqtt.Endpoints --version 2.29.0
NuGet\Install-Package Pulse.Mqtt.Endpoints -Version 2.29.0
<PackageReference Include="Pulse.Mqtt.Endpoints" Version="2.29.0" />
<PackageVersion Include="Pulse.Mqtt.Endpoints" Version="2.29.0" />
<PackageReference Include="Pulse.Mqtt.Endpoints" />
paket add Pulse.Mqtt.Endpoints --version 2.29.0
#r "nuget: Pulse.Mqtt.Endpoints, 2.29.0"
#:package Pulse.Mqtt.Endpoints@2.29.0
#addin nuget:?package=Pulse.Mqtt.Endpoints&version=2.29.0
#tool nuget:?package=Pulse.Mqtt.Endpoints&version=2.29.0
Pulse.Mqtt.Endpoints
Minimal-API-style MQTT endpoints. MapMqtt subscribes a route template, registers a handler, and gives each message a scoped endpoint context.
Install
dotnet add package Pulse.Mqtt.Endpoints
Map on a client
await using var endpoint = client.MapMqtt("sensors/{deviceId:int}/reading", async ctx =>
{
var deviceId = ctx.Route.GetInt("deviceId");
await StoreReadingAsync(deviceId, ctx.Message.Payload, ctx.CancellationToken);
});
await endpoint.Subscribed;
Map on a host
builder.Services.AddPulseMqttClient("telemetry", options =>
{
options.Host = "broker.example.com";
options.ClientId = "telemetry-service";
});
var app = builder.Build();
app.MapMqtt("sensors/{deviceId:int}/reading",
(int deviceId, Reading reading, IDeviceStore store, CancellationToken ct) =>
store.SaveAsync(deviceId, reading, ct));
Handler parameters are bound by the source generator: route values, typed payloads, services, MqttEndpointContext, and CancellationToken.
Manual acknowledgement endpoint
Endpoints are automatic by default. Opt into manual acknowledgement per endpoint when persistence or processing must complete before PUBACK/PUBREC is sent.
app.MapMqtt("orders/{id}", async ctx =>
{
await PersistAsync(ctx.Message, ctx.CancellationToken);
await ctx.AcknowledgeAsync(ctx.CancellationToken);
}, new MqttEndpointOptions
{
QualityOfService = MqttQualityOfService.AtLeastOnce,
Acknowledgement = MqttAcknowledgementMode.Manual,
});
In automatic mode, AcknowledgeAsync and RejectAsync throw InvalidOperationException. Request/reply endpoints stay automatic.
Full docs: https://araxis.github.io/pulse-mqtt/packages/endpoints
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. 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
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.17)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 9.0.17)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.17)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.17)
- Microsoft.Extensions.Options (>= 9.0.17)
- Pulse.Mqtt.Client (>= 2.29.0)
- Pulse.Mqtt.Core (>= 2.29.0)
- Pulse.Mqtt.DependencyInjection (>= 2.29.0)
-
net8.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.17)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 9.0.17)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.17)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.17)
- Microsoft.Extensions.Options (>= 9.0.17)
- Pulse.Mqtt.Client (>= 2.29.0)
- Pulse.Mqtt.Core (>= 2.29.0)
- Pulse.Mqtt.DependencyInjection (>= 2.29.0)
- System.IO.Pipelines (>= 9.0.17)
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 |
|---|---|---|
| 2.29.0 | 114 | 7/9/2026 |
| 2.29.0-preview.219 | 66 | 7/9/2026 |
| 2.29.0-preview.218 | 65 | 7/9/2026 |
| 2.29.0-preview.217 | 55 | 7/6/2026 |
| 2.28.0 | 97 | 7/6/2026 |
| 2.28.0-preview.215 | 51 | 7/6/2026 |
| 2.28.0-preview.214 | 62 | 7/6/2026 |
| 2.28.0-preview.213 | 65 | 7/6/2026 |
| 2.28.0-preview.212 | 66 | 7/6/2026 |
| 2.28.0-preview.211 | 62 | 7/4/2026 |
| 2.28.0-preview.210 | 65 | 7/4/2026 |
| 2.28.0-preview.209 | 59 | 7/4/2026 |
| 2.28.0-preview.208 | 65 | 7/4/2026 |
| 2.27.0 | 108 | 7/4/2026 |
| 2.27.0-preview.206 | 58 | 7/4/2026 |
| 2.27.0-preview.205 | 62 | 7/4/2026 |
| 2.27.0-preview.204 | 56 | 7/3/2026 |
| 2.27.0-preview.203 | 62 | 7/3/2026 |
| 2.27.0-preview.202 | 64 | 7/3/2026 |
| 2.27.0-preview.201 | 64 | 7/3/2026 |