-
Notifications
You must be signed in to change notification settings - Fork 16
RedisTransport
Brian Lehnen edited this page Apr 8, 2026
·
8 revisions
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
- Priority
- Status
- HeartBeat
- Delayed Processing
- Status Table
- Route
- Message Expiration
- History tracking (opt-in)
Unlike the SQL server transport, the queues do not need to be created before 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.
See the Redis samples in the DotNetWorkQueue.Samples repository.
For any issues please use the GitHub issues