IoTGateway.MQTTnet.Extensions.ManagedClient
5.0.0
dotnet add package IoTGateway.MQTTnet.Extensions.ManagedClient --version 5.0.0
NuGet\Install-Package IoTGateway.MQTTnet.Extensions.ManagedClient -Version 5.0.0
<PackageReference Include="IoTGateway.MQTTnet.Extensions.ManagedClient" Version="5.0.0" />
<PackageVersion Include="IoTGateway.MQTTnet.Extensions.ManagedClient" Version="5.0.0" />
<PackageReference Include="IoTGateway.MQTTnet.Extensions.ManagedClient" />
paket add IoTGateway.MQTTnet.Extensions.ManagedClient --version 5.0.0
#r "nuget: IoTGateway.MQTTnet.Extensions.ManagedClient, 5.0.0"
#:package IoTGateway.MQTTnet.Extensions.ManagedClient@5.0.0
#addin nuget:?package=IoTGateway.MQTTnet.Extensions.ManagedClient&version=5.0.0
#tool nuget:?package=IoTGateway.MQTTnet.Extensions.ManagedClient&version=5.0.0
MQTTnet.Extensions.ManagedClient
MQTTnet.Extensions.ManagedClient is a managed MQTT client extension for MQTTnet 5.x. It keeps the client connection alive, reconnects automatically, restores subscriptions after reconnect, and publishes queued application messages from a managed queue.
Features
- Automatic reconnect with configurable delay.
- Managed publish queue through
EnqueueAsync. - Optional pending-message queue limit and overflow strategy.
- Subscription tracking with automatic resubscription after reconnect.
- Event hooks for connection, reconnect failures, subscription synchronization, skipped messages, processed messages, and received messages.
- Optional storage abstraction for queued messages.
Installation
After the package is published to NuGet:
dotnet add package IoTGateway.MQTTnet.Extensions.ManagedClient
Before publishing, reference the project directly:
<ProjectReference Include="..\MQTTnet.Extensions.ManagedClient\MQTTnet.Extensions.ManagedClient.csproj" />
Quick Start
using MQTTnet;
using MQTTnet.Extensions.ManagedClient;
using MQTTnet.Protocol;
var factory = new MqttClientFactory();
using var client = factory.CreateManagedMqttClient();
client.ConnectedAsync += args =>
{
Console.WriteLine("Connected.");
return Task.CompletedTask;
};
client.DisconnectedAsync += args =>
{
Console.WriteLine("Disconnected.");
return Task.CompletedTask;
};
client.ApplicationMessageReceivedAsync += args =>
{
var payload = args.ApplicationMessage.ConvertPayloadToString();
Console.WriteLine($"Received {args.ApplicationMessage.Topic}: {payload}");
return Task.CompletedTask;
};
var options = new ManagedMqttClientOptionsBuilder()
.WithAutoReconnectDelay(TimeSpan.FromSeconds(5))
.WithMaxPendingMessages(1000)
.WithPendingMessagesOverflowStrategy(MqttPendingMessagesOverflowStrategy.DropOldestQueuedMessage)
.WithClientOptions(builder =>
{
builder
.WithTcpServer("broker.hivemq.com", 1883)
.WithClientId($"managed-client-{Guid.NewGuid():N}")
.WithCleanSession();
})
.Build();
await client.StartAsync(options);
await client.SubscribeAsync("iotgateway/demo/managed-client", MqttQualityOfServiceLevel.AtLeastOnce);
await client.EnqueueAsync("iotgateway/demo/managed-client", "hello from managed client", MqttQualityOfServiceLevel.AtLeastOnce);
Demo
Run the demo project:
dotnet run --project src/MQTTnet.Extensions.ManagedClient.Demo/MQTTnet.Extensions.ManagedClient.Demo.csproj
Optional arguments:
dotnet run --project src/MQTTnet.Extensions.ManagedClient.Demo/MQTTnet.Extensions.ManagedClient.Demo.csproj -- --host broker.hivemq.com --port 1883 --topic iotgateway/demo/managed-client
The demo connects to the broker, subscribes to the configured topic, publishes messages through the managed queue, prints received messages, and stops cleanly when you press Ctrl+C.
Main API
MqttClientFactory.CreateManagedMqttClient()creates the managed client.ManagedMqttClientOptionsBuilderbuilds reconnect, queue, storage, and MQTT client options.IManagedMqttClient.StartAsync(...)starts connection maintenance.IManagedMqttClient.EnqueueAsync(...)queues application messages for publishing.IManagedMqttClient.SubscribeAsync(...)andUnsubscribeAsync(...)manage subscriptions.IManagedMqttClient.StopAsync(...)stops publishing and disconnects.
License
This project is licensed under the MIT License.
| 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 is compatible. 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. |
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 |
|---|---|---|
| 5.0.0 | 43 | 6/20/2026 |