Skip to content

RedisTransport

blehnen edited this page Nov 10, 2026 · 9 revisions

Redis Transport

The redis transport uses LUA scripting to enqueue and dequeue records.

It uses StackExchange.Redis and is tested against modern Redis versions.

It supports the following features:

  • Priority
  • Status
  • HeartBeat
  • Delayed Processing
  • Status Table
  • Route
  • Message Expiration
  • History tracking (opt-in)
Configuration

Unlike with the SQL Server transport, you do not need to create the queues before you use them.

Usage

[Producer]

var queueName = "example";
var connectionString = "192.168.0.212";
var queueConnection = new QueueConnection(queueName, connectionString);
using (var queueContainer = new QueueContainer<RedisQueueInit>())
{
	using (var queue = queueContainer.CreateProducer<SimpleMessage>(queueConnection))
	{
		queue.Send(new SimpleMessage{Message = "hello world"});
	}
}

[Consumer]

var queueConnection = new QueueConnection(queueName, connectionString);
using (var queueContainer = new QueueContainer<RedisQueueInit>())
{
	using (var queue = queueContainer.CreateConsumer(queueConnection))
    {
		var notifications = new ConsumerQueueNotifications(
			(n) => Console.WriteLine($"Error: {n.Error}"),
			(n) => Console.WriteLine($"Receive error: {n.Error}"),
			(n) => Console.WriteLine($"Moved to error queue: {n.MessageId}"),
			(n) => Console.WriteLine($"Poison message: {n.MessageId}"),
			(n) => Console.WriteLine($"Rollback: {n.MessageId}"),
			(n) => Console.WriteLine($"Completed: {n.MessageId}"));
		queue.Start<SimpleMessage>(HandleMessages, notifications);
        Console.WriteLine("Processing messages - press any key to stop");
        Console.ReadKey((true));
    }
}

private void HandleMessages(IReceivedMessage<SimpleMessage> message, IWorkerNotification notifications)
{
    notifications.Log.LogDebug($"Processing Message {message.Body.Message}");
}

For more consumer patterns, see ConsumerMethod and ConsumerAsync.

If history tracking is enabled, see MessageHistory for retention and query options.

Full samples

See the Redis samples in the DotNetWorkQueue.Samples repository.

Clone this wiki locally