Download the PHP package sbooker/domain-events-persistence without Composer

On this page you can find all versions of the php package sbooker/domain-events-persistence. 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 domain-events-persistence

Read in English

Domain Events Persistence Library (sbooker/domain-events-persistence)

Latest Version Software License PHP Version Total Downloads Build Status codecov

Готовая реализация паттерна Transactional Outbox для библиотеки sbooker/domain-events.

Назначение библиотеки

Эта библиотека решает проблему надежности в системах, управляемых событиями: как гарантировать, что доменное событие будет обработано, если оно было создано в рамках транзакции, которая успешно завершилась?

sbooker/domain-events-persistence решает эту проблему, сохраняя ваши доменные события в постоянное хранилище (например, в ту же базу данных) внутри той же транзакции, что и ваши доменные сущности. Это достигается благодаря глубокой интеграции с sbooker/transaction-manager.

Затем отдельный фоновый процесс (консьюмер) считывает эти события и обрабатывает их, используя sbooker/persistent-pointer для отслеживания прогресса.

Ключевые особенности

Установка

Вам также понадобятся реализации для ваших фреймворков и ORM:

Быстрый старт

Шаг 1: Конечная цель: чистый код слоя приложения

Благодаря полной автоматизации, ваш код в слое проложения становится предельно простым и не знает ничего о событиях.

Шаг 2: Сборка зависимостей (Composition Root)

Чтобы достичь такой простоты, вам нужно один раз собрать все компоненты вместе в вашем DI-контейнере.

Шаг 3: Создание воркера-консьюмера

Создайте консольную команду или фоновый процесс (рекомендуется) на базе решений на event loop, например на sbooker/event-loop-worker, который будет в цикле обрабатывать события.

Продвинутое использование

Внешняя генерация позиций (PositionGenerator)

По умолчанию, position для PersistentEvent предполагается автоинкрементным полем в базе данных, и библиотека не управляет его генерацией. Однако существуют сценарии, когда последовательность событий должна управляться извне:

  1. Интеграция с legacy-системой, у которой уже есть своя нумерация событий.
  2. Использование СУБД, которые не поддерживают SEQUENCE или имеют проблемы с AUTO_INCREMENT в кластерных конфигурациях (например, старые версии MySQL).

Для этих случаев предназначен необязательный интерфейс PositionGenerator.

Решение в рамках экосистемы: sbooker/persistent-sequences

Для решения этой задачи без привлечения внешней инфраструктуры (вроде Redis) была создана библиотека sbooker/persistent-sequences. Она реализует персистентную, конкурентно-безопасную последовательность средствами реляционной СУБД.

Шаг 1: Установите и настройте persistent-sequences

Сначала установите библиотеку:

Затем создайте адаптер, который будет связывать persistent-sequences с интерфейсом PositionGenerator.

Шаг 2: Передайте его в PersistentPublisher

Теперь при сборке зависимостей просто передайте ваш генератор третьим аргументом в конструктор PersistentPublisher.

Теперь при сохранении события PersistentPublisher будет вызывать ваш SequencePositionGenerator для получения и установки позиции, обеспечивая единую, монотонно возрастающую последовательность для всех событий.

License

See LICENSE file.


All versions of domain-events-persistence with dependencies

PHP Build Version
Package Version
Requires php Version ^7.4 || ^8.0
psr/log Version ^1.0 || ^2.0 || ^3.0
sbooker/domain-events Version ^2.0
sbooker/transaction-manager Version ^2.3
sbooker/persistent-pointer Version ^1.0
symfony/serializer Version ^5.0 || ^6.0
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 sbooker/domain-events-persistence contains the following files

Loading the files please wait ....