alexlcdee/messenger-tarantool
Symfony Messenger transport for Tarantool Queue. Install via Composer and use either tarantool/client or the ext-tarantool PECL extension to connect to Tarantool and run messenger messages through a Tarantool-backed queue.
alexlcdee/messenger-tarantool) bridges Laravel’s built-in Messenger queue system with Tarantool, a high-performance in-memory database and Lua application server. This is ideal for:
Queue driver, it integrates seamlessly with Laravel’s Queue facade, dispatch() syntax, and job payload serialization (via Laravel’s Illuminate\Contracts\Queue\Job).reserve/release patterns).ext-tarantool must be installed (PECL or compiled from source).Illuminate\Queue\SerializesJobs).queue:work or custom) pull jobs via Tarantool’s Lua API.shouldBeQueued() overrides.| Risk Area | Severity | Mitigation |
|---|---|---|
| Tarantool Schema Dependency | High | Document schema requirements; provide migration scripts for Tarantool. |
| Lua/PHP Interop | Medium | Test edge cases (e.g., nested objects, large payloads). Use try-catch in Lua. |
| Worker Stuck Jobs | High | Implement Tarantool’s release() logic; add TTL to jobs. |
| No Active Maintenance | Critical | Fork/review codebase; add tests for Laravel 9+ compatibility. |
| Performance Bottlenecks | Medium | Benchmark against Redis; optimize Tarantool’s space configuration. |
Illuminate\Queue\Queue?database, redis, or sync drivers in .env:
QUEUE_CONNECTION=tarantool
App\Jobs\SendNotification) require no changes.queue:work or custom workers with TarantoolQueue binding.-- Tarantool Lua setup (e.g., in init.lua)
box.schema.space.create('queues', { if_not_exists = true })
box.schema.space.create('jobs', { if_not_exists = true })
tarantool.connect() with credentials in Laravel’s config.SendEmailJob) with the package.config/queue.php) to default to tarantool.insert API.| Component | Compatibility Notes |
|---|---|
| Laravel Jobs | Works with ShouldQueue, Handle, and Dispatchable. |
| Delayed Jobs | Supported via Tarantool’s delay field (custom Lua logic may be needed). |
| Middleware | Laravel’s QueueMiddleware applies; add Tarantool-specific middleware if needed. |
| Horizon | Not natively supported; build custom dashboard using Tarantool’s HTTP API or Lua. |
| Queue Retries | Requires Tarantool Lua script to handle release() on failure. |
ext-tarantool and configure php.ini.php artisan vendor:publish --provider="Alexlcdee\MessengerTarantool\ServiceProvider")..env and config/queue.php.ext-tarantool and Tarantool server updates for breaking changes.queue:failed-table cleanup) applies, but Tarantool may need custom scripts.box.space.jobs:select() to inspect jobs. Enable Lua debug logs.heartbeat field to track worker activity.json_encode()/json_decode().reserve() calls.space memory limits (box.cfg{memtx_max_size}).QUEUE_CONNECTION=tarantool&timeout=60 for long-running jobs.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Tarantool Node Crash | Job loss if |
How can I help you explore Laravel packages today?