HareIsle 2.0.0
dotnet add package HareIsle --version 2.0.0
NuGet\Install-Package HareIsle -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="HareIsle" Version="2.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add HareIsle --version 2.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: HareIsle, 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 HareIsle as a Cake Addin #addin nuget:?package=HareIsle&version=2.0.0 // Install HareIsle as a Cake Tool #tool nuget:?package=HareIsle&version=2.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
HareIsle
IPC .NET library powered by RabbitMQ. Provides RPC query, broadcast, and queue processing functionality.
Using
Install NuGet package:
dotnet add package HareIsle
Add using derective:
using RabbitMQ.Client;
using Usefull.HareIsle;
Create RabbitMq connection factory:
ConnectionFactory connectionFactory = new()
{
Uri = new Uri("amqp://user:pass@rabbithost:5672/"),
ConsumerDispatchConcurrency = 10,
AutomaticRecoveryEnabled = true,
TopologyRecoveryEnabled = true,
RequestedHeartbeat = TimeSpan.FromSeconds(10)
};
Scenario: broadcasting
Create the broadcast message handler:
// RabbitMq connection
using var connection = await connectionFactory.CreateConnectionAsync();
// Message handler
using var handler = new BroadcastHandler<SomeMessage>(
"Handler actor ID", // ID of the actor on whose behalf the message is processed
connection, // RabbitMq connection
"Broadcast ID", // ID of the actor on whose behalf messages are broadcast
message => // handling function
{
// do some handling
});
Console.ReadKey(); // message listening stops when press a key
Publish the broadcast message:
// Create the broadcast publisher
using var emitter = new Emitter("Broadcast ID", connection);
// Publish the message
await emitter.BroadcastAsync(new SomeMessage
{
Message = "some text",
Value = 123
});
Scenario: queue handling
Create the queue handler:
// RabbitMq connection
using var connection = await connectionFactory.CreateConnectionAsync();
// Message handler
using var handler = new QueueHandler<SomeMessage>(
"Handler actor ID", // ID of the actor on whose behalf the message is processed
connection, // RabbitMq connection
"QueueName", // queue name
5, // concurrency factor
message => // handling function
{
// do some handling
});
Console.ReadKey(); // queue listening stops when press a key
Place the message in the queue:
using var emitter = new Emitter("SomeActorID", connection); // create the emmiter
await emitter.DeclareQueueAsync("QueueName"); // declare the queue
await emitter.EnqueueAsync("QueueName", new SomeMessage // send the message
{
Text = "some text"
});
Scenario: RPC
Create the RPC handler:
// RabbitMq connection
using var connection = await connectionFactory.CreateConnectionAsync();
// RPC handler
using var handler = new RpcHandler<Request, Response>(
"Actor ID", // ID of the actor on whose behalf the RPC is processed
connection, // RabbitMq connection
5, // concurrency factor
reques => // RPC handling function
{
// do some handling
});
Console.ReadKey(); // message listening stops when press a key
Make the RPC and get a response:
using var rpcClient = new RpcClient("ClientID", connection);
var request = new Request
{
Value = 123,
Text = "some text"
};
var response = await rpcClient.CallAsync<Request, Response>("Actor ID", request);
Product | Versions 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. 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. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | 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.
-
.NETStandard 2.1
- Microsoft.VisualStudio.Threading (>= 17.12.19)
- Newtonsoft.Json (>= 13.0.3)
- RabbitMQ.Client (>= 7.0.0)
- System.ComponentModel.Annotations (>= 5.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.