PHPackages                             chocofamilyme/pubsub-life - 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. chocofamilyme/pubsub-life

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

chocofamilyme/pubsub-life
=========================

Библиотека для реализаций паттерна Pub/Sub

4.1.2(5y ago)013.1kBSD-3-ClausePHP

Since Sep 10Pushed 5y ago5 watchersCompare

[ Source](https://github.com/chocofamilyme/pubsub-life)[ Packagist](https://packagist.org/packages/chocofamilyme/pubsub-life)[ Docs](https://github.com/chocofamilyme/pubsub-life)[ RSS](/packages/chocofamilyme-pubsub-life/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (5)Dependencies (4)Versions (47)Used By (0)

Библиотека pub/sub
==================

[](#библиотека-pubsub)

Библиотека реализует событийную архитектуру приложений (Event-Driven Architecture).

Рабочий пример можно посмотреть вот здесь:

### Возможности

[](#возможности)

- Публикация событий без транзакции
- Подписка на события
- Повторная отправка события в ту же очередь при необходимости

### Требования

[](#требования)

- PHP &gt;=5.6
- PHP ext-sockets

### Установка

[](#установка)

```
composer require chocofamilyme/pubsub-life

```

### Настройка

[](#настройка)

На данный момент библиотека работает только с RabbitMQ, при желании можно добавить другие.

#### Настройка конфигов

[](#настройка-конфигов)

```
'eventsource' => [
    'default' => env('MESSAGE_BROKER', 'rabbitmq'),

    'drivers' => [
        'rabbitmq' => [
            'adapter'    => 'RabbitMQ',
            'host'     => env('EVENTSOURCE_HOST', 'eventsource'),
            'port'     => env('EVENTSOURCE_PORT', '5672'),
            'user'     => env('EVENTSOURCE_USER', 'guest'),
            'password' => env('EVENTSOURCE_PASSWORD', 'guest'),
        ],
    ],
]
```

Полный список смотрите -

### Использование

[](#использование)

Для RabbitMQ переменная `$routeKey` должна состоять минимум из двух частей разделенных точкой `.`. Пример `order.created`. Имя Exchange будет содержать первый блок, т.е. `order`. После этого если зайдете в админку rabbitmq должен создаться exchange с именем `order`.

**Обновленно**: начиная с версии 2.\* можно указать `exchange`, которому привяжется маршрут `$routeKey`

**Обновленно**: начиная с версии 2.\* можно указать `exchange` и связать с ним маршрут. Теперь можно указать массив маршрутов.

Чтобы обратно отправить сообщение в очередь необходимо в callback-функции кинуть исключение `Chocofamily\PubSub\Exceptions\RetryException`. Сообщение может максимум 5 раз обработаться повторно, после этого он попадает в очередь мертвых сообщений (exchange = DLX).

В подписчик можно передавать следующие настройки:

КлючТипОписание**durable**boolсохранять на диск данные, для большей надежности**queue**arrayнастройки самой очереди**prefetch\_count**intколичество одноновременно обрабатываемых сообщений, одним обработчиком (не всеми)**no\_ack**boolтребуется ли подтверждение сообщений**auto\_delete**boolУдаление exchange, если нет подключений к нему**app\_id**stringуникальный ID приложения. Можно использовать для идентификации откуда событие пошло изначально**long\_liver**boolзапускать ли воркер в цикле (по-умолчанию true)**TODO:**

1. Реализовать транзакционность (возможно обертка над библиотекой)
2. Внедрить middleware-объекты для реализации разных обработчиков (логирование, обработка исключений, перезапуск callback-функции и тд)
3. Покрыть тестами (50%)

###  Health Score

36

—

LowBetter than 82% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity21

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity75

Established project with proven stability

 Bus Factor1

Top contributor holds 50.7% 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 ~16 days

Recently: every ~59 days

Total

46

Last Release

2070d ago

Major Versions

1.1.4 → 2.0.02019-04-03

1.1.5 → 2.0.52019-05-29

1.1.6 → 2.0.72019-07-19

2.2.1 → 3.0.02019-11-11

3.2.0 → 4.02020-01-15

PHP version history (2 changes)0.0.2PHP &gt;= 7.0.0

4.0PHP &gt;=5.6

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/42729426?v=4)[Chocofamily](/maintainers/chocofamilyme)[@chocofamilyme](https://github.com/chocofamilyme)

---

Top Contributors

[![docxplusgmoon](https://avatars.githubusercontent.com/u/3988870?v=4)](https://github.com/docxplusgmoon "docxplusgmoon (34 commits)")[![Vadim89](https://avatars.githubusercontent.com/u/3715929?v=4)](https://github.com/Vadim89 "Vadim89 (22 commits)")[![ludovicose](https://avatars.githubusercontent.com/u/8954176?v=4)](https://github.com/ludovicose "ludovicose (3 commits)")[![zhainar](https://avatars.githubusercontent.com/u/16013711?v=4)](https://github.com/zhainar "zhainar (3 commits)")[![igor875126](https://avatars.githubusercontent.com/u/11134711?v=4)](https://github.com/igor875126 "igor875126 (2 commits)")[![aziza-kamet](https://avatars.githubusercontent.com/u/19660649?v=4)](https://github.com/aziza-kamet "aziza-kamet (2 commits)")[![sepaker](https://avatars.githubusercontent.com/u/8132455?v=4)](https://github.com/sepaker "sepaker (1 commits)")

---

Tags

publisher-subscriberpubsubrabbitmqeventspubsubMicroserviceeventsource

###  Code Quality

TestsCodeception

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/chocofamilyme-pubsub-life/health.svg)

```
[![Health](https://phpackages.com/badges/chocofamilyme-pubsub-life/health.svg)](https://phpackages.com/packages/chocofamilyme-pubsub-life)
```

###  Alternatives

[sabre/event

sabre/event is a library for lightweight event-based programming

35227.4M25](/packages/sabre-event)[nuwber/rabbitevents

The Nuwber RabbitEvents package

120515.8k3](/packages/nuwber-rabbitevents)[kainxspirits/laravel-pubsub-queue

Queue driver for Google Cloud Pub/Sub.

48381.1k3](/packages/kainxspirits-laravel-pubsub-queue)[petitpress/gps-messenger-bundle

Google Pub/Sub transport for Symfony Messenger

29491.0k3](/packages/petitpress-gps-messenger-bundle)[chocofamilyme/laravel-pubsub

AMQP wrapper for Laravel to publish and consume messages

1120.0k](/packages/chocofamilyme-laravel-pubsub)[clue/reactphp-eventsource

Instant real-time updates. Lightweight EventSource client receiving live messages via HTML5 Server-Sent Events (SSE). Fast stream processing built on top of ReactPHP's event-driven architecture.

5818.5k3](/packages/clue-reactphp-eventsource)

PHPackages © 2026

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