razorpay / lqext
Laravel queue enhancements, failure handling & retries.
Installs: 65 678
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 157
Forks: 1
Open Issues: 4
Requires
- php: >=8.1
- illuminate/bus: ^10.0
- illuminate/contracts: ^10.0
- illuminate/database: ^10.0
- illuminate/events: ^10.0
- illuminate/mail: ^10.0
- illuminate/support: ^10.0
Requires (Dev)
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^3.3
- dev-master
- 5.0.0
- 4.0.2
- 4.0.1
- 4.0.0
- 3.0.0
- 2.0.0
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-remove-semgrep
- dev-fix_dispatcher_sync
- dev-laravel_upgrade_test
- dev-bus-dispatcher-fix
- dev-event_dispatcher_fixed
- dev-php-upgrade
- dev-laravel-6.x
- dev-update_laravel_dependency
- dev-version_update
- dev-fixxx
- dev-add_skip_transaction_env_check
This package is auto-updated.
Last update: 2024-11-14 08:03:55 UTC
README
lqext
What
-
Makes Laravel's dispatchers which are buses, events & mailable, transaction
aware. I.e. dispatching events, jobs or mailable, be it queued or sync in
complex flows, inside nested transaction etc will work as normal expectation. -
Makes Laravel's queued dispatcher to log failures to redis storage andBecause of a minor
adds support for re attempting those failed remote pushes.
issue in framework's code the logging queue push failures part errors right.
now. Please wait while a workaround is added.
How
Thanks to framework's design which allows extending any service of its easily
and within limits.
The library extends a very few methods of events, mailer, dispatcher, queue
factory & queue services of framework. The extending is done via decoration
pattern instead of sub-classing.
Use
Install using composer
composer require jitendra/lqext
Copy configuration
cp vendor/jitendra/lqext/src/config.php config/lqext.php
Transaction aware dispatching
Besides whitelisting dispatch-able names in above config file, we can use below
trait in any of job, mailable classes.
class Job { use \Jitendra\Lqext\TransactionAware; // ... }
Logging queue push failures
Uses default redis connection and maintains log of jobs which failed push to
remote service in a list. Also Laravel's queue manager will have a method now
to retery failed pushes.
// Retry last 1k failed to push jobs. You could add a controller or write a // CLI command and invoke this method call from there. $this->app->queue->retryFailedToPushJobs();