PocketSolace 1.4.0

dotnet add package PocketSolace --version 1.4.0
                    
NuGet\Install-Package PocketSolace -Version 1.4.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="PocketSolace" Version="1.4.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="PocketSolace" Version="1.4.0" />
                    
Directory.Packages.props
<PackageReference Include="PocketSolace" />
                    
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 PocketSolace --version 1.4.0
                    
#r "nuget: PocketSolace, 1.4.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.
#:package PocketSolace@1.4.0
                    
#: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=PocketSolace&version=1.4.0
                    
Install as a Cake Addin
#tool nuget:?package=PocketSolace&version=1.4.0
                    
Install as a Cake Tool

About PocketSolace

PocketSolace is an F# library designed for sending and receiving direct messages over Solace. PocketSolace provides much simpler interface than the official package SolaceSystems.Solclient.Messaging. Here are the most important advantages of PocketSolace over the official package:

  • PocketSolace provides asynchronous functions which use standard .NET types like Tasks and ChannelReader. On the other hand the official package provides asynchronous interface based on callbacks. User has to provide two callbacks. One for receiving messages and the other for handling all session events such as connection up, error while connecting, connection down or readiness to send more messages.
  • PocketSolace uses plain string for topics and F# record type for messages. This simplifies library usage and unit testing. You can even use the interface of PocketSolace but provide custom implementation which doesn't use Solace.
  • PocketSolace supports ILogger from Microsoft.Extensions.Logging.Abstractions out of the box, the official package doesn't.
  • The official package is fragile. If you call certain Solace functions from Solace context thread (eg. from session event handler) then a segmentation fault may occur.

PocketSolace tries to be very simple alternative to the official package for direct messaging. It does not support guaranteed messaging. I decided not to support guaranteed messaging because as of July-September 2022 throughput was much lower with guaranteed messaging than with direct messaging.

PocketSolace also doesn't support queues. Because queues are not reliable with direct messaging: When Solace broker gets direct message it must promote it to guaranteed message before storing it into a queue. This promotion is an expensive operation and the broker may decide not to do it when it's under heavy load. If it doesn't promote a message then the message is not stored in queues but it's delivered to consumers. This leads to a system where applications receive messages but Solace queues don't store those messages even if they have the same subscriptions. The remedy is to use guaranteed messages but unfortunately these were (maybe still are) too slow.

About license

PocketSolace library license looks like the 3-clause BSD License but it has additional conditions:

  • This software must not be used for military purposes.
  • Source code must not be used for training or validating AI models. For example AI models which generate source code.
Product 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 was computed.  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 was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on PocketSolace:

Package Downloads
PocketSolace.SimpleService

Library for building microservices in F# which communicate via Solace. Provided interface fits nicely in async code.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.4.0 266 3/26/2024
1.3.0 456 10/25/2023
1.2.0 490 7/31/2023
1.1.0 392 5/12/2023
1.0.0 231 5/1/2023
0.2.2 493 12/20/2022
0.2.1 461 10/15/2022
0.2.0 476 7/5/2022
0.1.0 468 7/4/2022