Download the PHP package illusiard/yii2-rabbitmq without Composer

On this page you can find all versions of the php package illusiard/yii2-rabbitmq. 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 yii2-rabbitmq

illusiard/yii2-rabbitmq

Расширение Yii2 RabbitMQ с отложенным соединением, подтверждением публикации и управляемыми handlers c ретраем.

Quickstart

Требования:

Установка:

Пакет имеет тип yii2-extension и регистрирует bootstrap-класс через yii2-composer. В стандартном Yii2-приложении после установки автоматически доступны:

Первый Packagist-релиз целится в 0.1.0: API уже пригоден для использования, но minor-релизы до 1.0.0 могут уточнять contracts и namespaces.

Минимальная конфигурация компонента:

Если проект не использует стандартную загрузку Yii2 extensions из Composer, подключите модуль явно:

Для graceful shutdown CLI consumers по SIGTERM/SIGINT нужен ext-pcntl. Без него consumers работают, но graceful signal handling отключается.

Discovery для CLI:

Структура папок:

Publish:

Semantics / Gotchas

Profiles (multi-connection)

Если нужно несколько подключений, используйте profiles и defaultProfile:

В коде:

Connection hardening

TLS/SSL передается в php-amqplib как ssl options для stream context:

Consumer reconnect policy:

Для входящих сообщений можно ограничить тело и глубину JSON:

Ошибки лимитов и диагностика соединения не включают тело сообщения или секреты из DSN/token/password.

Profile (project defaults)

Profile позволяет задать общие defaults для definitions (consumers/publishers) без копипаста опций.
Это отдельная сущность от connection profiles и не обязательна.

Подключение профиля:

Допустимые значения profile: null, FQCN, callable или объект.
Если задан FQCN, используется Yii::createObject().

Пример профиля:

Правила merge:

Consumer definition

Consumer class (definitions):

ID берется из имени класса: OrdersConsumer -> orders, AuditLogConsumer -> audit-log.

Component-level consume config (managedRetry, retryPolicy, consumeMiddlewares, consumeFailFast, fatalExceptionClasses, recoverableExceptionClasses) является публичным runtime API. Эти значения сливаются поверх profile defaults и consumer options, поэтому применяются и в CLI, и при прямом запуске ConsumeRunner.

Publisher definition

Publisher class:

Публикация по id, найденному discovery (OrdersPublisher -> orders):

publishById() использует getExchange(), getRoutingKey(), getOptions(), profile publisher defaults, component/publisher/runtime publish middlewares и runtime overrides из третьего аргумента.

CLI

Команды:

CLI rabbitmq/consume запускает ConsumeRunner и использует ту же семантику пайплайна (middlewares, ExceptionClassifier, managed retry).
Запуск идёт по consumer-id, полученному из discovery. Если discovery выключен или paths не заданы, CLI вернет ошибку.

Ключевые опции rabbitmq/consume:

Пример:

Список найденных consumers:

Список publishers/middlewares:

Multiple components / --component

Все console-команды поддерживают --component=<id> для выбора нужного компонента RabbitMqService.

Topology

Topology описывает exchanges/queues/bindings и их аргументы. Это не publish‑опции и не retry‑политика. Topology строится только из topology-конфига компонента. Если включён discovery, сборка дополнительно проверяет, что очереди всех найденных consumers описаны в topology.

CLI:

topology-apply по умолчанию работает как dry-run: валидирует topology без подключения к брокеру. --dryRun=0 выполняет реальные declare/bind операции. --strict=1 оставлен как явная проверка перед apply; сейчас итог не отличается, потому что apply всегда валидирует topology.

Consume semantics

Publish semantics

Возвраты обрабатываются через ReturnSink и доступны через tick() + drainReturns().
В режиме mandatory=true без confirms это best‑effort: ошибки доставки нужно опрашивать.

ReturnSink и tick/poll

При mandatory=true callbacks basic.return снимаются при вызове tick() и попадают в ReturnSink.

Конфигурация:

Псевдо‑loop в publish‑only приложении:

Managed retry

Если managedRetry=true, то при handler=false или ConsumeResult::retry() применяется retry policy и:

maxAttempts обязателен и должен быть положительным integer. Каждая retryQueues[] запись требует name и ttlMs. При исчерпании попыток x-retry-count записывается как min(currentAttempt + 1, maxAttempts).

Пример политики:

Если в topology задан options.retryExchange, runtime retry всегда публикует туда, даже если retryPolicy.retryExchange отличается.

Ready protocol

CLI consumer readiness сигнализируется lock-файлом (stdout не используется).
--readyLock=/path/to/lock создаёт lock-файл при старте и удаляет при остановке. Без --readyLock путь строится внутри @runtime/rabbitmq. Для пользовательского пути владелец приложения отвечает за безопасную директорию; пакет отказывается писать в symlink target и symlink directory.

Serialization & Envelope

Можно публиковать типизированные сообщения через Envelope и сериализатор:

Упрощенный JSON publish:

Декодирование в handler:

JSON envelope формат: объект с payload и обязательным messageId (или message_id).

Middlewares

Можно подключить middleware для publish/consume:

Встроенные middleware:

RPC (request/reply)

Client:

Server:

RPC и middleware:

Public API

Публичными для SemVer считаются namespaces:

Остальные namespaces (amqp, orchestration, helpers, часть console, profile) пока являются поддерживаемой реализацией, но могут уточняться до 1.0.0.

DLQ tools

Просмотр сообщений в DLQ:

По умолчанию dlq-inspect безопасен и не удаляет сообщения (requeue=true). Разрушающий режим включается только с --ack=1 --force=1.

Повторная отправка после исправления ошибки:

Очистка мусорной очереди:

Troubleshooting / FAQ

Unroutable message (mandatory/basic.return):

Confirm timeout:

Exchange/queue not declared:

Permissions/vhost errors:

Connection refused / heartbeat timeouts:

Consumer exits on exception:

Retry loops / attempts:

DLQ inspect shows same message:

Consumer restart strategy:

Error Codes

Healthcheck

Команда проверяет соединение и канал, возвращает OK или FAIL:

Integration tests

Запуск:

Локальный RabbitMQ (docker compose):

Env для подключения:

Env-флаги:


All versions of yii2-rabbitmq with dependencies

PHP Build Version
Package Version
Requires php Version >=8.1
php-amqplib/php-amqplib Version ^3.5
phpseclib/phpseclib Version ^3.0.52
yiisoft/yii2 Version ^2.0.55
ext-ctype Version *
ext-pcntl Version *
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 illusiard/yii2-rabbitmq contains the following files

Loading the files please wait ...