RSQueueClient 1.0.0

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

RSQueueClient

.NET client library for RSQueue message queue service.

Installation

Add a reference to the RSQueueClient project or install the NuGet package:

dotnet add package RSQueueClient

Quick Start

using RSQueueClient;

// Create client (without authentication)
using var client = new RSQueueApiClient("http://localhost:4000");

// Or with Basic Authentication
using var client = new RSQueueApiClient("http://localhost:4000", "admin", "password123");

Usage Examples

Health Check

var health = await client.GetHealthAsync();
Console.WriteLine($"Status: {health.Status}");
Console.WriteLine($"Version: {health.Version}");
Console.WriteLine($"Uptime: {health.UptimeSeconds} seconds");
Console.WriteLine($"Active Queues: {health.ActiveQueues}");

Queue Management

Create a Queue
var request = new CreateQueueRequest
{
    Name = "my-queue",
    VisibilityTimeoutSeconds = 30,
    EnableDeduplication = true,
    DeduplicationWindowSeconds = 300
};
var queue = await client.CreateQueueAsync(request);

// Or with defaults
var queue = await client.CreateQueueAsync("my-queue");
List Queues
var queues = await client.ListQueuesAsync();
foreach (var queue in queues)
{
    Console.WriteLine($"{queue.Name} - Size: {queue.Size}");
}
Get Queue Details
var details = await client.GetQueueDetailsAsync("my-queue");
Console.WriteLine($"Messages pending: {details.MessagesPending}");
Console.WriteLine($"Messages in flight: {details.MessagesInFlight}");
Update Queue Settings
var update = new UpdateQueueRequest
{
    VisibilityTimeoutSeconds = 60,
    EnableDeduplication = false
};
await client.UpdateQueueSettingsAsync("my-queue", update);
Delete a Queue
await client.DeleteQueueAsync("my-queue");
Purge a Queue
await client.PurgeQueueAsync("my-queue");

Message Operations

Enqueue a Single Message
var response = await client.EnqueueMessageAsync("my-queue", "Hello, World!");
Console.WriteLine($"Message ID: {response.Id}");
Enqueue Batch Messages
var messages = new List<string>
{
    "Message 1",
    "Message 2",
    "Message 3"
};
var batch = await client.EnqueueBatchAsync("my-queue", messages);
Console.WriteLine($"Successful: {batch.Successful}, Failed: {batch.Failed}");
Get Messages (Dequeue)
var messages = await client.GetMessagesAsync("my-queue", count: 5);
foreach (var msg in messages)
{
    Console.WriteLine($"ID: {msg.Id}, Content: {msg.Content}");

    // Process the message...

    // Delete after processing
    if (msg.ReceiptHandle.HasValue)
    {
        await client.DeleteMessageAsync("my-queue", msg.ReceiptHandle.Value);
    }
}
Peek Messages (Without Dequeuing)
var messages = await client.PeekMessagesAsync("my-queue", count: 5);
foreach (var msg in messages)
{
    Console.WriteLine($"ID: {msg.Id}, Content: {msg.Content}, Status: {msg.Status}");
}
List All Messages
var allMessages = await client.ListAllMessagesAsync("my-queue");
Console.WriteLine($"Total messages: {allMessages.Count}");

Processing Messages

Use the built-in helper to process messages:

await client.ProcessMessagesAsync(
    "my-queue",
    async (message) =>
    {
        Console.WriteLine($"Processing: {message.Content}");

        // Do your work here...
        await Task.Delay(100);

        // Return true to delete the message, false to leave it
        return true;
    },
    batchSize: 10
);

Metrics

Get Queue Metrics
var metrics = await client.GetQueueMetricsAsync("my-queue");
Console.WriteLine($"Pending: {metrics.MessagesPending}");
Console.WriteLine($"In flight: {metrics.MessagesInFlight}");
Get Metrics Summary
var summary = await client.GetMetricsSummaryAsync();
Console.WriteLine($"Total enqueued: {summary.MessagesEnqueuedTotal}");
Console.WriteLine($"Total dequeued: {summary.MessagesDequeuedTotal}");
Console.WriteLine($"Duplicates rejected: {summary.DuplicateMessagesRejectedTotal}");
Get Raw Prometheus Metrics
var rawMetrics = await client.GetMetricsAsync();
Console.WriteLine(rawMetrics);

Cancellation Token Support

All async methods support CancellationToken:

var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5));
var health = await client.GetHealthAsync(cts.Token);

License

MIT

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  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.
  • net10.0

    • No dependencies.

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.0 3,765 11/25/2025