PHPackages                             vanilla/garden-message-queue - 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. vanilla/garden-message-queue

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

vanilla/garden-message-queue
============================

A message queue implementation for Vanilla.

v1.0(7y ago)040MITPHPPHP &gt;=7.0.0

Since Aug 8Pushed 6y ago3 watchersCompare

[ Source](https://github.com/vanilla/garden-message-queue)[ Packagist](https://packagist.org/packages/vanilla/garden-message-queue)[ RSS](/packages/vanilla-garden-message-queue/feed)WikiDiscussions master Synced 2w ago

READMEChangelog (1)Dependencies (4)Versions (2)Used By (0)

Garden Message Queue
====================

[](#garden-message-queue)

This component provides everything needed for Vanilla to schedule jobs and process them.

It provides two main services, a `JobQueue` and a `JobDriver`. The `JobQueue` provides a scheduling service while the `JobDriver` provides an implementation which executes job payloads on the web server itself.

How to set it up in Vanilla?
----------------------------

[](#how-to-set-it-up-in-vanilla)

- Add `vanilla/garden-message-queue` to the `require` section in Vanilla's `composer.json`.
- Run `composer update`
- Bootstrap this component by adding the following snippet in Vanilla's `bootstrap.php`.

```
// Bootstrap the MessageQueue component
\Garden\MessageQueue\JobQueue::bootstrap(Gdn::getContainer());

```

Once configured, you can access the scheduler to add a job as followed:

```
/* @var $jobQueue \Garden\MessageQueue\JobQueue */
$jobQueue = Gdn::getContainer()->get('JobQueue');

// Schedules a job
$job = $jobQueue->addJob(EchoJob::class, ['message' => 'Hello World!']);
echo "EchoJob was scheduled with ID: " . $job->getID() . " and status: " . $job->getStatus();

```

At the end of the web request, once `GDN_Dispatcher` is done rendering the view, all jobs scheduled with the `JobQueue` will be processed one after another. A call to [fastcgi\_finish\_request()](http://php.net/manual/en/function.fastcgi-finish-request.php) will be made so that all processing can run in the background without hanging the browser rendering.

How to execute jobs on a dedicated queue system?
------------------------------------------------

[](#how-to-execute-jobs-on-a-dedicated-queue-system)

You can provide your own driver by implementing the `JobDriverInterface` interface and then configure the container to use that custom job driver instead of the default one.

```
// Switch implementation for the 'JobQueue' service
Gdn::getContainer()
        ->rule('JobQueue')
        ->setClass(ExternalJobQueue::class)
        ->setShared(true)

```

This new driver would then be responsible to delegate jobs to an external queue system such as RabbitMQ. A new job processor would have to be implemented in order to consume those jobs. Take a look at the [Queue Interop](https://github.com/vanilla/queue-interop) repo for hints as to what the implementation would entail.

###  Health Score

26

—

LowBetter than 41% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 84.6% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

2883d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/248212?v=4)[Tim Gunter](/maintainers/kaecyra)[@kaecyra](https://github.com/kaecyra)

---

Top Contributors

[![evach-vf](https://avatars.githubusercontent.com/u/15455914?v=4)](https://github.com/evach-vf "evach-vf (22 commits)")[![DaazKu](https://avatars.githubusercontent.com/u/2412909?v=4)](https://github.com/DaazKu "DaazKu (4 commits)")

---

Tags

non-production

### Embed Badge

![Health badge](/badges/vanilla-garden-message-queue/health.svg)

```
[![Health](https://phpackages.com/badges/vanilla-garden-message-queue/health.svg)](https://phpackages.com/packages/vanilla-garden-message-queue)
```

###  Alternatives

[symfony/messenger

Helps applications send and receive messages to/from other applications or via message queues

1.1k128.6M1.4k](/packages/symfony-messenger)[symfony/cache

Provides extended PSR-6, PSR-16 (and tags) implementations

4.2k365.0M3.1k](/packages/symfony-cache)[matomo/matomo

Matomo is the leading Free/Libre open analytics platform

21.6k38.2k](/packages/matomo-matomo)[symfony/amazon-sqs-messenger

Symfony Amazon SQS extension Messenger Bridge

4613.5M20](/packages/symfony-amazon-sqs-messenger)[tempest/framework

The PHP framework that gets out of your way.

2.2k31.1k12](/packages/tempest-framework)[api-platform/metadata

API Resource-oriented metadata attributes and factories

244.5M182](/packages/api-platform-metadata)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
