RockLib.Messaging 2.0.0

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package RockLib.Messaging --version 2.0.0                
NuGet\Install-Package RockLib.Messaging -Version 2.0.0                
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="RockLib.Messaging" Version="2.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add RockLib.Messaging --version 2.0.0                
#r "nuget: RockLib.Messaging, 2.0.0"                
#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.
// Install RockLib.Messaging as a Cake Addin
#addin nuget:?package=RockLib.Messaging&version=2.0.0

// Install RockLib.Messaging as a Cake Tool
#tool nuget:?package=RockLib.Messaging&version=2.0.0                

A simple API for sending and receiving messages.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  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. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net451 is compatible.  net452 was computed.  net46 was computed.  net461 was computed.  net462 is compatible.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (8)

Showing the top 5 NuGet packages that depend on RockLib.Messaging:

Package Downloads
RockLib.Messaging.SQS

Implementation of RockLib.Messaging API that sends and receives messages using Amazon SQS.

RockLib.Messaging.SNS

Implementation of RockLib.Messaging API that sends messages using Amazon SNS.

RockLib.Messaging.Kafka

Implementation of RockLib.Messaging API that sends and receives messages using Kafka.

RockLib.Messaging.CloudEvents

Send and receive messages using the CloudEvents format.

RockLib.Messaging.NamedPipes

Implementation of RockLib.Messaging API that sends and receives messages to a local named pipe.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
4.0.1 4,551 7/16/2024
4.0.0 1,967 3/4/2024
4.0.0-alpha.1 154 2/28/2024
3.0.1 52,826 2/23/2023
3.0.0 69,733 2/25/2022
2.5.3 41,037 8/13/2021
2.5.2 97,128 5/7/2021
2.5.1 901 3/24/2021
2.5.0 3,389 3/23/2021
2.4.4 51,093 2/24/2021
2.4.3 75,071 8/14/2020
2.4.2 1,532 7/30/2020
2.4.1 733 7/29/2020
2.4.0 853 7/15/2020
2.3.1 1,976 6/22/2020
2.3.0 56,216 5/26/2020
2.2.0 4,617 4/9/2020
2.1.0 59,405 3/3/2020
2.0.4 44,654 4/2/2019
2.0.3 758 3/20/2019
2.0.2 949 2/22/2019
2.0.1 4,083 2/1/2019
2.0.0 1,750 1/10/2019
2.0.0-alpha15 981 1/3/2019
2.0.0-alpha14 952 12/19/2018
2.0.0-alpha13 551 12/18/2018
2.0.0-alpha12 532 12/18/2018
2.0.0-alpha11 865 12/7/2018
2.0.0-alpha10 542 12/7/2018
2.0.0-alpha09 990 11/30/2018
2.0.0-alpha08 1,105 11/23/2018
2.0.0-alpha07 821 11/22/2018
2.0.0-alpha06 546 11/21/2018
2.0.0-alpha05 596 11/21/2018
2.0.0-alpha04 792 11/15/2018
2.0.0-alpha03 792 11/14/2018
2.0.0-alpha02 558 11/9/2018
2.0.0-alpha01 805 10/22/2018
1.0.2 3,597 8/27/2018
1.0.1 1,377 4/6/2018
1.0.0 1,364 12/20/2017

RockLib.Messaging version 2.0.0

- Changes to `MessagingScenarioFactory`:
 - No longer has a concept of "queue vs topic". The factory methods are `CreateSender` and `CreateReceiver`.
 - Uses `IConfiguration` as its data source instead of `IMessagingScenarioFactory` (which no longer exists).
 - Configurations are assumed to have the subsections, `Senders` and/or `Receivers` (case-insensitive), that respectively contain one or more type-defined implementations of `ISender` and `IReceiver`.
 - Uses `RockLib.Configuration.Config.Root.GetSection("RockLib.Messaging")` as the default value for its configuration.
   - Can call `MessagingScenarioFactory.SetConfiguration` to set the configuration programmatically.
 - Has `CreateSender` and `CreateReceiver` extension methods that work with any instance of `IConfiguration` to create senders and receivers.
 - Adds optional `defaultTypes`, `valueConverters`, `resolver`, and `reloadOnConfigChange` parameters to the create methods, allowing greater customization of the sender or receiver.
- Changes to the sending API:
 - There is no longer an `ISenderMessage` interface, just the concrete `SenderMessage` class.
   - Automatically handles encoding and compression.
   - Replaces the `MessageFormat` property with `IsBinary`.
   - Renames `StringValue` and `BinaryValue` properties to `StringPayload` and `BinaryPayload`.
   - Removes the `Priority` property.
 - The `ISender` interface's `SendAsync` method takes a `CancellationToken` parameter.
- Changes to the receiving API:
 - `IReceiverMessage`
   - The `Acknowledge` method is renamed to `AcknowledgeAsync` and made asynchronous (it returns a `Task`).
   - Adds `RollbackAsync` and `RejectAsync` methods.
     - RollbackAsync allows users to indicate that a message was not successfully processed but should be (or should be allowed to be) redelivered.
     - RejectAsync allows users to indicate that a message could not be successfully processed and should not be redelivered.
     - AcknowledgeAsync allows users to indicate that a message was successfully processed and should not be redelivered.
   - Adds `Handled` property.
     - Returns false for a message that has not yet been handled by the `AcknowledgeAsync`, `RollbackAsync`, or `RejectAsync` methods.
     - Returns true for a message after it has been handled by the `AcknowledgeAsync`, `RollbackAsync`, or `RejectAsync` methods.
   - Replaces `GetStringValue` and `GetBinaryValue` methods with `StringPayload` and `BinaryPayload` properties.
   - Replaces `GetHeaderValue` and `GetHeaderNames` methods with `Headers` property.
   - Removes the `Priority` property.
 - `IReceiver`
   - The `MessageReceived` event and `Start` method are replaced by the read/write `MessageHandler` property of type `IMessageHandler`.
   - The receiver is started when the property is set.
   - The receiver calls the `OnMessageReceivedAsync` method of its `MessageHandler` when a message is received.
   - A receiver can also be started by invoking the `Start` extension method.
     - The delegate parameter passed to the extension method is invoked when the receiver receives a message.
   - Adds an `Error` event for implementations to invoke when an internal error occurs - useful when errors originate in a background thread.
 - `Receiver` base class
   - An abstract class to simplify implementations of the `IReceiver` interface and make them more consistent.
   - Adds validation in the setter of the `MessageHandler` property so the a receiver can only be started once. Also disallows a null value.
 - `ReceiverMessage` base class
   - An abstract class to simplify implementations of the `IReceiverMessage` interface and make them more consistent.
   - Its constructor handles the decoding and decompression of incoming message payloads, whether they be string or binary.
   - Provides an abstract method for implementations to populate its headers.
   - Provides abstract methods for the handler methods: `AcknowledgeAsync`, `RollbackAsync`, and `RejectAsync`.
   - Ensures that the message is only handled once.
- The Named Pipes feature has been moved to its own package, RockLib.Messaging.NamedPipes (it is no longer included in the main RockLib.Messaging package).
- Adds the RockLib.Messaging.SNS package.
 - Adds `SNSSender` class, which allows messages to be sent to an SNS topic.
- Changes to the RockLib.Messaging.SQS package:
 - Renames `SQSQueueSender` and `SQSQueueReceiver` to `SQSSender` and `SQSReceiver`.
 - Adds optional `region` parameter to `SQSSender` and `SQSReceiver`.
 - Adds optional `unpackSNS` flag to `SQSReceiver`.
   - Useful when the SQS queue receives messages from an SNS topic - the payloads of such messages contain a JSON object representing the entire raw SNS message.
   - When set, the JSON object is unpacked, and the body and headers are populated from the unpacked message.
- Adds RockLib.Messaging.Http package.
 - `HttpClientSender`
   - An ...truncated (10000 bytes)