Skip to content
Brian Lehnen edited this page Apr 9, 2021 · 6 revisions

Introduction

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.

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 loose messages not yet committed to disk.

  1. Durable. When sending a message, once you receive the ack, the transport has acknowledged receipt of the message.

  2. '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.

  3. Heartbeat - Work held by failed workers can be picked up by other workers.

  4. Expiration - Work can be expired; it will not be sent to a worker.

  5. Delay - work can be delayed. Depending on the transport, the delay may be approximate.

License

Copyright © 2016-2021 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/.

Clone this wiki locally