Kephas.Messaging.Distributed 11.1.0 The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org. Prefix Reserved

.NET 6.0 .NET Standard 2.1
Install-Package Kephas.Messaging.Distributed -Version 11.1.0
dotnet add package Kephas.Messaging.Distributed --version 11.1.0
<PackageReference Include="Kephas.Messaging.Distributed" Version="11.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Kephas.Messaging.Distributed --version 11.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Kephas.Messaging.Distributed, 11.1.0"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install Kephas.Messaging.Distributed as a Cake Addin
#addin nuget:?package=Kephas.Messaging.Distributed&version=11.1.0

// Install Kephas.Messaging.Distributed as a Cake Tool
#tool nuget:?package=Kephas.Messaging.Distributed&version=11.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Distributed messaging

The [[message processing|Architecture-of-messaging]] is an in-process feature, which is not per se bad, but in distributed scenarios it is limiting. The distributed messaging fills the gap by providing infrastructure components that can communicate in a such an environment.

Using the messaging infrastructure is a little more elaborate:

    // ensure the message has been sent
    await messageBroker.DispatchAsync(new RefreshCacheEvent { Key = "Users" }, ctx => ctx.OneWay()).PreserveThreadContext();   

This can be achieved in a simpler way, using the provided extension methods:

    // ensure the message has been sent
    await messageBroker.PublishAsync(new RefreshCacheEvent { Key = "Users" }).PreserveThreadContext();   

The distributed messaging flow

Distributed Messaging

The participants in the distributed message flow are:

  • The brokered message: This is the message being sent through the underlying infrastructure to the processors.
  • The message broker: This is the in-process component dispatching the messages by the means of the underlying infrastructure.
  • The brokered message handler: This is the [[message handler|Architecture-of-messaging#message-handlers]] on the other end, receiving the brokered message and ensuring that it is processed and, if requested, a proper response is sent back.
  • Infrastructure dependent components which:
    • send/queue messages.
    • read the messages and forward them to the in-process [[message processor|Architecture-of-messaging#the-message-processor]] .

Brokered message

A brokered message (IBrokeredMessage) is a specialization of a [[message|Architecture-of-messaging#messages]] carrying with it the original message to be processed and some distributed environment information. It can be regarded as an "envelope" transporting the actual message.

  • Content: the message to be actually processed.
  • Sender: contains information about the message sender. For some broadcasts, it can be used to not forward the message to the original sender.
  • Channel: contains the channel to use. If not provided, the default channel will be used.
  • IsOneWay: indicates whether the sender awaits an answer to the message, or is just a fire and forget scenario.
  • Timeout: the timeout for requests awaiting for a response.

The message broker

This is a [[singleton application service|Application-Services#shared-scope-shared-or-instance-based-services]] dispatching messages through a channel to registered processors.

The IMessageBroker service contract has the following methods:

  • DispatchAsync(object message, [optionsConfig: Action<IDispatchingContext>], [cancellationToken: CancellationToken]): Task<IMessage>: Dispatches the brokered message asynchronously.
    • Depending on the IsOneWay setting in the brokered message, it waits for a response or not.

InProcessMessageBroker

The in-process message broker is the Kephas implementation for a message broker dispatching the message to the in-process [[message processor|Architecture-of-messaging#the-message-processor]]. It has the [[lowest override priority|Application-Services#override-priority]].

This is the default message broker used when no custom one has been defined. It is recommended to use real-world implementations, using established message queuing infrastructure.

The brokered message handler

Brokered messages are nothing more than [[message|Architecture-of-messaging#messages]] requiring proper handling. The brokered message handler is the default implementation forwarding the contained message to the in-process [[message processor|Architecture-of-messaging#the-message-processor]].

Product Versions
.NET net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows
.NET Core netcoreapp3.0 netcoreapp3.1
.NET Standard netstandard2.1
MonoAndroid monoandroid
MonoMac monomac
MonoTouch monotouch
Tizen tizen60
Xamarin.iOS xamarinios
Xamarin.Mac xamarinmac
Xamarin.TVOS xamarintvos
Xamarin.WatchOS xamarinwatchos
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Kephas.Messaging.Distributed:

Package Downloads
Kephas.Orchestration The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

Provides the infrastructure for orchestrating microservices based on the Kephas Framework. Typically used areas and classes/interfaces/services: - IOrchestrationManager, IRuntimeAppInfo. - Interaction: AppHeartbeatEvent, AppStartedEvent, AppStoppedEvent. - Endpoints: StopAppMessage. Kephas Framework ("stone" in aramaic) aims to deliver a solid infrastructure for applications and application ecosystems.

Kephas.Messaging.Distributed.Redis The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

Provides distributed message routing over Redis using StackExchange.Redis. Typically used areas and classes/interfaces/services: - RedisAppMessageRouter. Kephas Framework ("stone" in aramaic) aims to deliver a solid infrastructure for applications and application ecosystems.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
11.1.0 117 4/13/2022
11.1.0-dev.4 50 4/6/2022
11.1.0-dev.3 47 3/30/2022
11.1.0-dev.2 51 3/23/2022
11.1.0-dev.1 46 3/23/2022
11.0.0 107 3/11/2022
11.0.0-dev.7 55 3/7/2022
11.0.0-dev.6 49 2/28/2022
11.0.0-dev.5 46 2/26/2022
11.0.0-dev.4 51 2/24/2022
11.0.0-dev.3 50 2/23/2022
11.0.0-dev.2 50 2/18/2022
11.0.0-dev.1 53 2/7/2022
10.3.0 89 1/18/2022
10.2.0 689 12/3/2021
10.1.0 4,647 11/23/2021
10.1.0-dev.7 115 11/17/2021
10.1.0-dev.6 90 11/16/2021
10.1.0-dev.5 88 11/10/2021
10.1.0-dev.4 89 11/8/2021
10.1.0-dev.3 75 11/8/2021
10.1.0-dev.2 88 11/4/2021
10.1.0-dev.1 85 11/3/2021
10.0.1 343 10/16/2021
10.0.0 339 10/13/2021
10.0.0-dev.4 78 10/13/2021
10.0.0-dev.3 97 10/11/2021
10.0.0-dev.2 148 10/8/2021

Please check https://github.com/kephas-software/kephas/releases for the change log.
           Also check the documentation and the samples from https://github.com/kephas-software/kephas/wiki and https://github.com/kephas-software/kephas/tree/master/Samples.