Download the PHP package chocofamilyme/pubsub without Composer

On this page you can find all versions of the php package chocofamilyme/pubsub. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package pubsub

Библиотека для реализации паттерна pub/sub для фреймворка Phalcon

Библиотека реализует событийную архитектуру приложений (Event-Driven Architecture). Работает с фреймворком Phalcon 3.x, но при желании можно легко адаптировать под другие фреймворки.

Рабочий пример можно посмотреть вот здесь: https://github.com/chocofamilyme/pubsub/tree/master/examples

Возможности

Требования

Установка

Настройка

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

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

Полный список смотрите - https://github.com/php-amqplib/php-amqplib

Добавляем брокер в DI контейнер

Здесь $cache объект реализующий интерефейс Phalcon\Cache\BackendInterface. Кэш используется для подсчета количества повторной обработки определенного сообщения.

Таблица параметров с настройками

Ключ Значение Описание
connection По умолчанию PhpAmqpLib\Connection\AMQPLazyConnection::class php-amqplib
connection_timeout По умолчанию 3.0 (сек) Максимальное время на соединение с сервером Rabbitmq
read_write_timeout По умолчанию 3.0 (сек) Максимальное время на получение
heartbeat По умолчанию 60 (сек) RabbitMQ Doc
keepalive По умолчанию false RabbitMQ Doc
context По умолчанию null RabbitMQ Doc
prefetch_count По умолчанию 1 RabbitMQ Doc
no_ack По умолчанию false RabbitMQ Doc
durable По умолчанию true RabbitMQ Doc
exclusive По умолчанию false RabbitMQ Doc
queue По умолчанию [] RabbitMQ Doc
basic_consume_exclusive По умолчанию false RabbitMQ Doc
wait_allowed_methods По умолчанию null php-amqplib
wait_non_blocking По умолчанию true php-amqplib
wait_timeout По умолчанию 0 Максимальное время ожидания до получения первого сообщения
exchange_type По умолчанию topic RabbitMQ Doc)
app_id По умолчанию '' Индификатор приложения которое создает сообщение
sleep По умолчанию 0.1 секунды Если wait_non_blocking равно true, то если нету задачи ждать время sleep

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

Публикация

Публиковать сообщения можно используя класс Chocofamily\PubSub\Publisher. Минимальный рабочий пример: Для RabbitMQ переменная `$routeKey` должна состоять минимум из двух частей разделенных точкой `.`. Пример `order.created`. Имя Exchange будет содержать первый блок, т.е. `order`. После этого если зайдете в админку rabbitmq должен создаться exchange с именем `order`. Обновленно: начиная с версии 2.* можно указать `exchange`, которому привяжется маршрут `$routeKey, пример:

Подписка на событие

Для подписки на события используется класс Chocofamily\PubSub\Subscriber. Минимальный рабочий пример:

``

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

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

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

Публикация используя транзакции БД

Этот способ необходим для атомарности сохранения сущности в БД и публикования события. Следующая картинка хорошо иллюстрирует как это работает: alt text

Для этого необходимо создать таблицу events:

`

Пример использования: ``

Модель Order должна реализовывать итерфейс ModelInterface.

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

Метод up работает так

Повторная отправка события

Для повторной отправке событие используется класс Chocofamily\PubSub\Services\EventRepeater. Рабочий пример: ``

Очистка журнала событий

Для очистки событий используется класс Chocofamily\PubSub\Services\EventCleaner с методом clean.

Рабочий пример: По умолчанию удаляетя событие больше 1 месяца. Если передать дату как второй параметр в конструкторе, то будет удалятся все событие до указонной даты:

@todo


All versions of pubsub with dependencies

PHP Build Version
Package Version
Requires php Version >= 7.1
ext-json Version *
ext-phalcon Version >= 3.0.0
chocofamilyme/pathcorrelation Version 0.2.*
php-amqplib/php-amqplib Version ^3.1
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package chocofamilyme/pubsub contains the following files

Loading the files please wait ....