PHPackages                             tetthys/claim-dispatch - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Queues &amp; Workers](/categories/queues)
4. /
5. tetthys/claim-dispatch

ActiveLibrary[Queues &amp; Workers](/categories/queues)

tetthys/claim-dispatch
======================

Minimal contracts for claim→process→dispatch pipelines, with built-in Laravel adapter.

0.0.3(8mo ago)038MITPHPPHP &gt;=8.1

Since Sep 19Pushed 7mo agoCompare

[ Source](https://github.com/tetthys/claim-dispatch)[ Packagist](https://packagist.org/packages/tetthys/claim-dispatch)[ RSS](/packages/tetthys-claim-dispatch/feed)WikiDiscussions dev Synced 1mo ago

READMEChangelog (3)Dependencies (4)Versions (4)Used By (0)

tetthys/claim-dispatch
======================

[](#tetthysclaim-dispatch)

> **Atomic claim-dispatch framework for Laravel**
> Safely schedule and dispatch jobs from a single action log table.

---

✨ Features
----------

[](#-features)

- **Single table** (`action_logs`) as a durable schedule
- **Atomic claim** – prevent duplicate dispatch across workers
- **Processors** – type-based mapping from log row → Job
- **Idempotent jobs** – designed for safe re-execution
- **Universal publisher** – domain-agnostic, higher-order &amp; fluent
- **Publisher Facade** – simple static API: `Publisher::quick(...)`
- **Configurable** – add your own processors, rules, and evaluation logic

---

📦 Installation
--------------

[](#-installation)

```
composer require tetthys/claim-dispatch
```

Publish config and migration:

```
php artisan vendor:publish --tag=claim-dispatch-config
php artisan vendor:publish --tag=claim-dispatch-migrations
php artisan migrate
```

---

⚡ Quick Start
-------------

[](#-quick-start)

### 1. Define a Processor

[](#1-define-a-processor)

Suppose you want to schedule **welcome emails**. Each log row with `type = email.welcome` should become a `SendWelcomeEmail` Job.

```
