MakoIoT.Device.Services.Messaging 1.0.82.41369

dotnet add package MakoIoT.Device.Services.Messaging --version 1.0.82.41369
                    
NuGet\Install-Package MakoIoT.Device.Services.Messaging -Version 1.0.82.41369
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MakoIoT.Device.Services.Messaging" Version="1.0.82.41369" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="MakoIoT.Device.Services.Messaging" Version="1.0.82.41369" />
                    
Directory.Packages.props
<PackageReference Include="MakoIoT.Device.Services.Messaging" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add MakoIoT.Device.Services.Messaging --version 1.0.82.41369
                    
#r "nuget: MakoIoT.Device.Services.Messaging, 1.0.82.41369"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package MakoIoT.Device.Services.Messaging@1.0.82.41369
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=MakoIoT.Device.Services.Messaging&version=1.0.82.41369
                    
Install as a Cake Addin
#tool nuget:?package=MakoIoT.Device.Services.Messaging&version=1.0.82.41369
                    
Install as a Cake Tool

Mako-IoT.Device.Services.Messaging

Message bus with pub-sub and stronly typed data contracts.

Main concepts

Message routing

There are two type of routes:

  • Broadcast messages are published under topics and delivered to one or more subscribers. This is usually used for propagating events.
  • Direct message is delivered to single recipient. This is usually used for sending commands. Routing is done automatically based on message types.

Message contracts

Message contracts are classes that implement IMessage interface. MessageType must be set to full type name of the class.

public class BlinkCommand : IMessage
{
    public BlinkCommand()
    {
        MessageType = this.GetType().FullName;
    }
    public bool LedOn { get; set; }
    public string MessageType { get; set; }
}

Consumers

Messages are delivered to consumer classes.

public class BlinkCommandConsumer : IConsumer
{
    private readonly IBlinker _blinker;
    private readonly ILogger _logger;

    public BlinkCommandConsumer(IBlinker blinker, ILogger logger)
    {
        _blinker = blinker;
        _logger = logger;
    }

    public void Consume(ConsumeContext context)
    {
        var cmd = (BlinkCommand)context.Message;
        _logger.LogDebug($"Setting LED to {cmd.LedOn}");
        _blinker.Set(cmd.LedOn);
    }
}

Consumers are registered against message types in DeviceBuilder with AddDirectMessageConsumer or AddSubscriptionConsumer

public static void Main()
{
    DeviceBuilder.Create()
        .AddMessageBus(o =>
        {
            o.AddDirectMessageConsumer(typeof(BlinkCommand), typeof(BlinkCommandConsumer), ConsumeStrategy.LastMessageWins);
        })
   //[...]
Consume strategies

Consuming multiple messages of same type (i.e. by single consumer) may be done in one of three fashions:

  1. Synchronously - receiving subsequent messages is blocked until current message ends processing.
  2. FIFO - received messages are put onto a queue and processed in order.
  3. Last Message Wins - the most recent message is processed and older unprocessed messages are discarded. This equivalent to bulkhead resilience pattern with single concurrent action.

Sending messages

bus.Send(msg, "device1"); //sends direct message to "device1"
bus.Publish(msg); //publishes broadcast message

Interoperability with .NET

With .NET implementation of message bus you can easily communicate between nanoFramework devices and .NET services or application. Data contract classes can be shared across both parties. See messaging sample.

Product Compatible and additional computed target framework versions.
.NET Framework net is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
1.0.82.41369 0 9/27/2025
1.0.81.31061 148 7/15/2025
1.0.80.20703 150 7/8/2025
1.0.79.42931 182 4/23/2025
1.0.78.42041 216 4/17/2025
1.0.77.58336 199 4/3/2025
1.0.76.47396 186 4/2/2025
1.0.75.54889 193 3/20/2025
1.0.74.58895 214 3/11/2025
1.0.73.3184 197 3/10/2025
1.0.72.37069 243 3/3/2025
1.0.71.58660 148 2/27/2025
1.0.67.58431 145 2/22/2025
1.0.66.61791 137 2/20/2025
1.0.65.9968 144 2/18/2025
1.0.63.58350 142 11/28/2024
1.0.62.39147 123 11/27/2024
1.0.61.65061 136 11/26/2024
1.0.60.8871 135 11/25/2024
1.0.59.39628 133 11/19/2024
1.0.58.46908 139 10/31/2024
1.0.57.41830 176 10/19/2024
1.0.56.35619 175 10/18/2024
1.0.55.53831 135 10/16/2024
1.0.54.17802 139 9/30/2024
1.0.53.63834 137 9/26/2024
1.0.52.58630 152 9/20/2024
1.0.51.33981 157 9/12/2024
1.0.50.7227 165 9/5/2024
1.0.49.65299 162 8/28/2024
1.0.48.4709 145 8/27/2024
1.0.47.29483 163 8/11/2024
1.0.46.26755 151 8/10/2024
1.0.45.44465 123 8/5/2024
1.0.44.59575 168 6/12/2024
1.0.43.12089 153 5/18/2024
1.0.42.33950 158 5/17/2024
1.0.41.841 169 4/9/2024
1.0.40.35009 153 4/8/2024
1.0.39.27363 163 4/3/2024
1.0.38.33544 162 3/22/2024
1.0.37.6157 165 3/21/2024
1.0.36.17910 235 1/6/2024
1.0.35.19216 183 12/30/2023
1.0.34.20615 182 12/2/2023
1.0.33.8822 167 12/1/2023
1.0.32.53741 177 11/17/2023
1.0.31.63629 157 11/11/2023
1.0.30.34678 156 11/11/2023
1.0.29.45728 159 10/9/2023
1.0.28.38941 178 10/6/2023
1.0.27.18901 174 10/4/2023
1.0.25.29211 251 5/29/2023
1.0.24.44332 222 5/25/2023
1.0.20.4309 219 5/22/2023
1.0.19.42541 215 5/22/2023