-
Notifications
You must be signed in to change notification settings - Fork 16
Home
This library was created to handle distributed work. It was also created due to a specific requirement; the only service guaranteed to be available was Microsoft SQL server.
The library targets .NET 10.0 and .NET 8.0.
A redis transport was added afterwards. Lua scripting is used to handle the operations. A SQLite transport was added in 2016.
The following features are available. Transports may also support additional features. Note that some features depend on how you have configured the transport. For instance, if Redis crashes, you may lose messages not yet committed to disk.
-
Durable. When sending a message, once you receive the ack, the transport has acknowledged receipt of the message.
-
'At least once' delivery. Work will be delivered at least once. You may receive duplicate messages depending on various factors. For instance, if a network partition occurs right before a message is completed, that message may be delivered again. You should consider this when implementing message processing logic.
-
Heartbeat - Work held by failed workers can be picked up by other workers.
-
Expiration - Work can be expired; it will not be sent to a worker.
-
Delay - work can be delayed. Depending on the transport, the delay may be approximate.
-
Message history - you can opt into lifecycle tracking per message (enqueue, processing, complete, error, expire). Records are kept for a configurable retention period and show up in the dashboard. See MessageHistory.
-
Per-message cancellation - running messages can be canceled cooperatively from the dashboard or in code.
-
Message ID logging scope - MessageId and CorrelationId get pushed into ILogger scope automatically when your handler runs, so structured logs correlate back to specific messages.
-
Message interception - you can compress or encrypt messages in transit with pluggable interceptors. See MessageInterception.
-
Job scheduler - schedule recurring work with cron expressions via the Cronos library. Multiple schedulers can run for redundancy. See Scheduler.
-
Dashboard - a REST API and Blazor Server UI for monitoring and managing queues. See Dashboard.
-
Maintenance mode - you can run maintenance monitors (heartbeat reset, expiration cleanup) separately from your consumers if you want centralized control. See MaintenanceMode.
-
Transports - SQL Server, Redis, PostgreSQL, SQLite, LiteDB, and an in-memory backend.
Copyright © 2016-2026 Brian Lehnen
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.
For any issues please use the GitHub issues