PHPackages                             octo-php/symfony-messenger - 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. octo-php/symfony-messenger

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

octo-php/symfony-messenger
==========================

Symfony Messenger transport for the Async PHP Platform — in-process message passing via bounded OpenSwoole channels with backpressure.

v0.1.2(2mo ago)001MITPHPPHP &gt;=8.4

Since Mar 3Pushed 2mo agoCompare

[ Source](https://github.com/LaProgrammerie/octo-php-symfony-messenger)[ Packagist](https://packagist.org/packages/octo-php/symfony-messenger)[ RSS](/packages/octo-php-symfony-messenger/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (5)Versions (2)Used By (1)

octo-php/symfony-messenger
==========================

[](#octo-phpsymfony-messenger)

Transport Symfony Messenger in-process pour la plateforme async PHP — message passing via channels OpenSwoole bornés avec backpressure.

Installation
------------

[](#installation)

```
composer require octo-php/symfony-messenger
```

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

[](#configuration)

### DSN

[](#dsn)

```
# config/packages/messenger.yaml
framework:
    messenger:
        transports:
            async:
                dsn: 'openswoole://default'
                options:
                    channel_capacity: 100
                    send_timeout: 5.0
```

### Variables d'environnement

[](#variables-denvironnement)

VariableTypeDéfautDescription`OCTOP_SYMFONY_MESSENGER_CHANNEL_CAPACITY`int`100`Capacité du channel borné (backpressure)`OCTOP_SYMFONY_MESSENGER_CONSUMERS`int`1`Nombre de coroutines consommatrices par worker`OCTOP_SYMFONY_MESSENGER_SEND_TIMEOUT`float (s)`5.0`Timeout d'envoi quand le channel est plein### Via le bundle

[](#via-le-bundle)

```
# config/packages/octo.yaml
octo:
    messenger:
        channel_capacity: 100
        consumers: 1
        send_timeout: 5.0
```

Fonctionnement
--------------

[](#fonctionnement)

Le transport utilise un channel OpenSwoole borné pour le message passing in-process :

- `send()` : push le message dans le channel. Si le channel est plein, la coroutine yield (backpressure) jusqu'à ce qu'un espace soit disponible ou que le timeout soit atteint.
- `get()` : pop un message du channel avec un poll timeout de 1s.
- `ack()` : no-op (in-process, pas de broker externe).
- `reject()` : log warning.

Les consumers sont spawnés au boot du worker via structured concurrency (`TaskGroup`) et annulés proprement au shutdown (pas de coroutines zombies).

Métriques
---------

[](#métriques)

MétriqueTypeDescription`messenger_messages_sent_total`counterMessages envoyés`messenger_messages_consumed_total`counterMessages consommés`messenger_channel_size`gaugeTaille courante du channelLimitations
-----------

[](#limitations)

### Transport in-process uniquement

[](#transport-in-process-uniquement)

Ce transport est **non distribué** et **non durable** :

- Les messages sont stockés en mémoire dans le channel OpenSwoole du worker
- Le channel est **isolé par worker** : les messages ne sont pas partagés entre workers
- Les messages **non consommés au moment du restart du worker sont perdus**

### Cas d'usage adaptés

[](#cas-dusage-adaptés)

- Fire-and-forget (notifications, logs asynchrones)
- Background jobs légers (envoi d'emails, cache warming)
- Traitement asynchrone intra-requête

### Cas d'usage non adaptés

[](#cas-dusage-non-adaptés)

Pour le messaging durable, distribué ou critique, utiliser les transports externes standard Symfony :

- AMQP (RabbitMQ)
- Redis
- Doctrine

Retry et failure transport
--------------------------

[](#retry-et-failure-transport)

Les mécanismes standard de retry et failure transport de Symfony Messenger s'appliquent normalement :

```
framework:
    messenger:
        transports:
            async:
                dsn: 'openswoole://default'
                retry_strategy:
                    max_retries: 3
                    delay: 1000
                    multiplier: 2

        failure_transport: failed

        transports:
            failed:
                dsn: 'doctrine://default?queue_name=failed'
```

Pour les messages critiques, configurez un failure transport durable (Doctrine, Redis) afin de ne pas perdre les messages en cas de restart.

Licence
-------

[](#licence)

MIT

###  Health Score

35

—

LowBetter than 80% of packages

Maintenance85

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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

76d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/e3192df86b9648428e1ad85643809f814e4a2f48279370f8bd39dc4fcacb0365?d=identicon)[laprogrammerie](/maintainers/laprogrammerie)

---

Top Contributors

[![matthieuwerner](https://avatars.githubusercontent.com/u/3184545?v=4)](https://github.com/matthieuwerner "matthieuwerner (5 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/octo-php-symfony-messenger/health.svg)

```
[![Health](https://phpackages.com/badges/octo-php-symfony-messenger/health.svg)](https://phpackages.com/packages/octo-php-symfony-messenger)
```

###  Alternatives

[symfony/doctrine-messenger

Symfony Doctrine Messenger Bridge

52986.7M156](/packages/symfony-doctrine-messenger)[symfony/amqp-messenger

Symfony AMQP extension Messenger Bridge

29555.6M59](/packages/symfony-amqp-messenger)[symfony/redis-messenger

Symfony Redis extension Messenger Bridge

21846.4M33](/packages/symfony-redis-messenger)[symfony/amazon-sqs-messenger

Symfony Amazon SQS extension Messenger Bridge

4612.5M15](/packages/symfony-amazon-sqs-messenger)[zenstruck/messenger-monitor-bundle

Batteries included UI to monitor your Messenger workers, transports, schedules, and messages.

261561.9k5](/packages/zenstruck-messenger-monitor-bundle)[koco/messenger-kafka

Symfony Messenger Kafka Transport

931.1M1](/packages/koco-messenger-kafka)

PHPackages © 2026

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