PHPackages                             t3n/jobqueue-rabbitmq - 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. t3n/jobqueue-rabbitmq

ActiveNeos-package[Queues &amp; Workers](/categories/queues)

t3n/jobqueue-rabbitmq
=====================

A Flowpack.JobQueue.Common implementation to support RabbitMQ as backend

2.3.1(3y ago)2263.3k↑82.9%2[2 PRs](https://github.com/t3n/JobQueue.RabbitMQ/pulls)1MITPHP

Since Jan 25Pushed 3y ago7 watchersCompare

[ Source](https://github.com/t3n/JobQueue.RabbitMQ)[ Packagist](https://packagist.org/packages/t3n/jobqueue-rabbitmq)[ RSS](/packages/t3n-jobqueue-rabbitmq/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (9)Dependencies (3)Versions (13)Used By (1)

[![CircleCI](https://camo.githubusercontent.com/470e976bf137405b70477ca7633d83ec5abc698dbbf71499965179f9e6df3914/68747470733a2f2f636972636c6563692e636f6d2f67682f74336e2f4a6f6251756575652e5261626269744d512e7376673f7374796c653d737667)](https://circleci.com/gh/t3n/JobQueue.RabbitMQ) [![Latest Stable Version](https://camo.githubusercontent.com/7041bc5f632aebbf09ecba61c66d4d37efb1ce16a6f290f6f3b9878c0c632fe8/68747470733a2f2f706f7365722e707567782e6f72672f74336e2f6a6f6271756575652d7261626269746d712f762f737461626c65)](https://packagist.org/packages/t3n/jobqueue-rabbitmq) [![Total Downloads](https://camo.githubusercontent.com/609b08561b818677380bd310a61f253746b648c8312d6cbe2ebf976cd2cda6fb/68747470733a2f2f706f7365722e707567782e6f72672f74336e2f6a6f6271756575652d7261626269746d712f646f776e6c6f616473)](https://packagist.org/packages/t3n/jobqueue-rabbitmq)

t3n.JobQueue.RabbitMQ
=====================

[](#t3njobqueuerabbitmq)

A job queue backend for the [Flowpack.JobQueue.Common](https://github.com/Flowpack/jobqueue-common) package based on [RabbitMQ](https://www.rabbitmq.com). If you don't know anything about RabbitMQ yet have a look at their tutorials [here](https://www.rabbitmq.com/getstarted.html).

Disclaimer: This is a fork/remake of an initial version which was made by [ttreeagency](https://github.com/ttreeagency/)!

Setup
-----

[](#setup)

To use RabbitMQ as a backend for a JobQueue you need a running RabbitMQ Service. You can use our docker image which also includes the management console [t3n/rabbitmq](https://quay.io/repository/t3n/rabbitmq)

Install the package using composer:

```
composer require t3n/jobqueue-rabbitmq

```

Configuration
-------------

[](#configuration)

RabbitMQ allows a wide range of configuration and setups. Have a look at `Settings.yaml` for an overview with all available configuration options.

The simplest configuration for a job queue could look like this:

```
Flowpack:
  JobQueue:
    Common:
      queues:
        simple-queue:
          className: 't3n\JobQueue\RabbitMQ\Queue\RabbitQueue'
          executeIsolated: true

          options:
            queueOptions:
              # we want the queue to persist messages so they are stored even if no consumer (aka worker) is connected
              durable: true
              # multiple worker should be able to consume a queue at the same time
              exclusive: false
              autoDelete: false

            client:
              host: localhost
              port: 5672
              username: guest
              password: guest
```

A more complex configuration could also configure an exchange and some routing keys. In this example we will configure one exchange which all producers connect to. If your RabbitMQ server has the `rabbitmq_delayed_message_exchange` plugin ([our docker image](https://www.rabbitmq.com)ships it by default) enabled we can also use the delay feature.

This configuration will configure several queues for one exchange. Message are routed to the queue based on a `routingKey`. We will use three parts for it: `..`. We will use the type `job` to indicate it's a job to execute. We could also use something like `log` or whatever. The shape of the routing key is up to you!

So after all we will configure several producers/job queues. The producer queues are meant to be used with `$jobManager->queue()`. The consumer queue will be used within the `./flow job:work` command.

In this example we will end up with two queues. One queue with all messages matching the routing key `vendor.jobs.*`, so whenever the `producer-import` or `producer-tags` queue is used the message will end up in this queue. And another queue that fetches all jobs for all vendors.

To actually start a consumer run `./flow job:work --queue all-jobs`.

This pattern enables you to implement different kind of advanced pub/sup implementations.

```
Flowpack:
  JobQueue:
    Common:
      presets:
        rabbit:
          className: 't3n\JobQueue\RabbitMQ\Queue\RabbitQueue'
          executeIsolated: true
          maximumNumberOfReleases: 3

          releaseOptions:
            delay: 5

          options:
            routingKey: ''
            useDLX: true # enable support for dead letter exchange, requires configuration in RabbitMQ

            queueOptions:
              # don't declare a queue by default
              # all messages are forwarded to the exchange "t3n"
              declare: false
              exchangeName: 't3n'
              # the queue should be durable and don't delete itself
              durable: true
              autoDelete: false
              # several worker are allowed per queue
              exclusive: false

            exchange:
              name: 't3n'
              # this exchange should support delayed messages
              type: 'x-delayed-message'
              passive: false
              durable: true
              autoDelete: false
              arguments:
                # the origin type is topic so we can use routingkeys including `*` or `#`
                x-delayed-type: 'topic'

            client:
              host: localhost
              port: 5672
              username: guest
              password: guest
              heartbeat: 60 # Sets RabbitMQ connection heartbeat to 60 seconds

      queues:
        producer-import:
          preset: rabbit
          options:
            routingKey: 'vendor.jobs.import'

        producer-tags:
          preset: rabbit
          options:
            routingKey: 'vendor.jobs.tags'

        vendor-jobs:
          preset: rabbit
          options:
            routingKey: 'vendor.jobs.*'
            queueOptions:
              # this queue should actually be declared
              declare: true

        all-jobs:
          preset: rabbit
          options:
            routingKey: '*.jobs.*'
            queueOptions:
              # this queue should actually be declared
              declare: true
```

###  Health Score

39

—

LowBetter than 86% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity39

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity67

Established project with proven stability

 Bus Factor1

Top contributor holds 80.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

Every ~154 days

Recently: every ~264 days

Total

9

Last Release

1439d ago

Major Versions

1.0.3 → 2.0.02019-07-19

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/769789?v=4)[Johannes Steu](/maintainers/johannessteu)[@johannessteu](https://github.com/johannessteu)

---

Top Contributors

[![johannessteu](https://avatars.githubusercontent.com/u/769789?v=4)](https://github.com/johannessteu "johannessteu (25 commits)")[![paxuclus](https://avatars.githubusercontent.com/u/15905038?v=4)](https://github.com/paxuclus "paxuclus (6 commits)")

---

Tags

flowframeworkflowpackjobqueuerabbitmq

### Embed Badge

![Health badge](/badges/t3n-jobqueue-rabbitmq/health.svg)

```
[![Health](https://phpackages.com/badges/t3n-jobqueue-rabbitmq/health.svg)](https://phpackages.com/packages/t3n-jobqueue-rabbitmq)
```

###  Alternatives

[vladimir-yuldashev/laravel-queue-rabbitmq

RabbitMQ driver for Laravel Queue. Supports Laravel Horizon.

2.1k9.8M30](/packages/vladimir-yuldashev-laravel-queue-rabbitmq)[php-amqplib/rabbitmq-bundle

Integrates php-amqplib with Symfony &amp; RabbitMq. Formerly emag-tech-labs/rabbitmq-bundle, oldsound/rabbitmq-bundle.

1.3k20.1M65](/packages/php-amqplib-rabbitmq-bundle)[bschmitt/laravel-amqp

AMQP wrapper for Laravel and Lumen to publish and consume messages

2752.3M7](/packages/bschmitt-laravel-amqp)[enqueue/amqp-lib

Message Queue Amqp Transport

1078.5M61](/packages/enqueue-amqp-lib)[jwage/phpamqplib-messenger

Symfony messenger transport for the php-amqplib/php-amqplib library.

84149.7k1](/packages/jwage-phpamqplib-messenger)[mikemadisonweb/yii2-rabbitmq

Wrapper based on php-amqplib to incorporate messaging in your Yii2 application via RabbitMQ. Inspired by RabbitMqBundle for Symfony 2, really awesome package.

74262.1k1](/packages/mikemadisonweb-yii2-rabbitmq)

PHPackages © 2026

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