Event-Based framework for distributed applications (MQTT Core transport support).


Keywords
Mqtt, MqttNet, EventBus, Event, MQ
License
Apache-2.0
Install
Install-Package MQTTnet.EventBus -Version 2.5.2-rc

Documentation

MQTTnet.EventBus

CI GitHub Nuget Nuget

Quick Start

In your ASP.NET Core Startup.cs file add the following

public void ConfigureServices(IServiceCollection services)
{
    //...

    var retryCount = 5;
    services.AddMqttEventBus(cfg =>
    {
        cfg
            .WithClientId("Api")
            .WithTcpServer("{Ip Address}", port: 1883);

    }, retryCount);
    services.AddTransient<MyEventHandler>();
}

An EventHandler is a class that may handle one or more message types. Each message type is defined by the IIntegrationEventHandler interface, where T is the MqttApplicationMessageReceivedEventArgs.

public class MyEventHandler : IIntegrationEventHandler
{
    public Task Handle(MqttApplicationMessageReceivedEventArgs args)
    {
        //Some action...
        return Task.CompletedTask;
    }
}

Then in your application add this extension

public static class ApplicationBuilderExtansions
{
    public static IApplicationBuilder UseEventBus(this IApplicationBuilder app, Action<IEventBus> action)
    {
        var eventBus = app.ApplicationServices.GetRequiredService<IEventBus>();
        action.Invoke(eventBus);
        return app;
    }
}

and use it in your Startup.cs file

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    //...

    app.UseEventBus(async bus => 
    {
        await bus.SubscribeAsync<IntegrationEventHandler>("MyTopic1");
    });
}

Injected interfaces

  • IEventBus
  • IMqttPersisterConnection
  • IEventBusSubscriptionsManager