instasent/resque-bundle
A Symfony bundle for integrating Resque with PHP applications, providing configuration and services to dispatch, manage, and run Redis-backed background jobs so time-consuming tasks can be offloaded from web requests.
Reality check first: instasent/resque-bundle is a Symfony2 bundle, not a Laravel package. It has no service provider, no facade, and no Laravel config integration. As a Laravel developer, you will almost never install this bundle directly. What you actually want is the underlying library it wraps — php-resque (or a maintained fork) — plus a small Laravel service provider of your own.
New in v0.2.5: a single fix — "Fixed key for retry_strategy". This is a patch that corrects the config key name used when wiring a retry strategy into the bundle's configuration. It confirms the bundle has (and intends to support) a retry_strategy config option, but it changes nothing about the framework story: still Symfony, still no Laravel integration. It does mean the repo is not strictly abandoned — a release landed after a long quiet period — but one key-name fix is not a maintenance commitment.
If you are evaluating this repo for architectural ideas:
README.md for the bundle's config keys and console commands — pay attention to the retry_strategy node, whose key name changed in v0.2.5.DependencyInjection/ and Resources/config/services.yml to see how the Resque service and worker command are wired, and how retry_strategy is passed through to the underlying library.resque:worker / enqueue command implementation.composer.json for the php-resque version it pins — that tells you the real compatibility story. Retry behaviour lives in that pin (a fork/plugin with retry support), not in php-resque core.First practical use case in a Laravel app: install a php-resque fork, register a singleton that wraps Resque::enqueue(), and run a worker under Supervisor. The bundle's patterns (a thin service around enqueue + a long-running worker command) map cleanly onto a Laravel service provider and an Artisan command.
Enqueueing from Laravel
perform() method matching php-resque's contract.Resque singleton in a service provider that reads Redis host/port/database from config/database.php.Resque::enqueue('queue_name', JobClass::class, $args).$args small, JSON-serializable, and scalar. Pass IDs, not Eloquent models.Worker process
resque:work) or run the upstream bin/resque script directly.QUEUE, INTERVAL, COUNT, and VERBOSE, mirroring php-resque conventions.Integration tips
resque:queue:<name>, resque:workers, resque:failed).prod:emails, staging:emails) to avoid cross-environment job leakage.resque-web UI is Ruby-based; otherwise build a small Laravel dashboard reading Redis keys.Modelling the bundle's retry config in Laravel
retry_after, tries, and backoff on the native Redis queue job, or Horizon for the whole story, rather than re-implementing a strategy object on top of php-resque.When the bundle itself is relevant
Alternative pattern — don't use Resque at all
php-resque version for PHP 8 compatibility; older php-resque releases have issues with PHP 8 type handling and deprecated APIs. Prefer a maintained fork.retry_strategy key means your retry config was previously ignored without error. If you copy config from older docs or from a pre-v0.2.5 README, you may be configuring a key the container never reads. Verify the exact key in DependencyInjection/Configuration.php against your config; do not trust blog posts or cached READMEs.resque:failed and stay there unless your strategy or a failure backend re-enqueues them. Do not assume Laravel-queue-like semantics.COUNT or restart workers periodically via Supervisor. Watch RSS in production.SIGTERM/SIGINT so in-flight jobs finish, and that retries aren't double-counted across a restart. Configure Supervisor with stopsignal=TERM and a sensible stopwaitsecs.VERBOSE=1 and VVERBOSE=1 to see job pickup and failures. Inspect Redis directly: LLEN resque:queue:<name>, SMEMBERS resque:workers, LRANGE resque:failed 0 -1. When retries "don't work", check the container's resolved config first — that was exactly the v0.2.5 bug class.instasent_resque:), which does not map to Laravel's config/*.php conventions. If you port it, keep connection settings in config/database.php, keep retry settings in a dedicated config/queue.php block, and inject via the container.beforeEnqueue, afterEnqueue, beforePerform, afterPerform, onFailure) are the right place for logging, metrics, idempotency checks, and retry bookkeeping. Wrap them in a Laravel service provider rather than forking the library.How can I help you explore Laravel packages today?