n3ttech/messeging

CQRS + ES for php

1.3.5 2019-12-06 05:17 UTC

This package is auto-updated.

Last update: 2024-09-06 17:33:40 UTC


README

## 处理 CQRS 和 ES 的库

  1. 定义事件总线
use N3tt3ch\Messaging\Event;

$eventRouterFactory = new Event\EventRouting\EventRouterFactory();
$eventTransporterFactory = new Event\EventTransporting\EventTransporterFactory(
	$eventRouterFactory->fromDirectory('path to directory with event map'),
	new Event\EventSourcing\EventProjectionProvider($container)
);

$eventBus = new Event\EventBus($eventTransporterFactory->createDefault());

进一步,我们需要创建事件存储和事件流

use N3tt3ch\Messaging\Event;
use N3tt3ch\Messaging\Snapshot;

$snapshotStorage = new Snapshot\SnapshotStore\SnapshotStorage($container->get(Snapshot\Persist\SnapshotRepository::class));
$eventStorageFactory = new Event\EventStore\EventStorageFactory($container->get(Event\Persist\EventStreamRepository::class));
$eventStorage = $eventStorageFactory->create($eventBus);

$someAggregateRepository = new SomeAggregateRepository($eventStorage, $snapshotStorage);
  1. 定义命令总线
use N3tt3ch\Messaging\Command;

$commandHandlerProvider = new Command\CommandHandling\CommandHandlerProvider($container);
$commandRouterFactory = new Command\CommandRouting\CommandRouterFactory($commandHandlerProvider);
$commandTransporterFactory = new Command\CommandTransporting\CommandTransporterFactory($commandRouterFactory->createDefault());

$commandBus = new Command\CommandBus($commandTransporterFactory->createDefault());
  1. 定义查询总线
use N3tt3ch\Messaging\Query;

$queryHandlerProvider = new Query\QueryHandling\QueryHandlerProvider($container);
$queryRouterFactory = new Query\QueryRouting\QueryRouterFactory($queryHandlerProvider);
$queryTransporterFactory = new Query\QueryTransporting\QueryTransporterFactory($queryRouterFactory->createDefault());

$queryBus = new Query\QueryBus($queryTransporterFactory->createDefault());

您可以使用自己的消息传输。您可以使用自己的消息命名策略。

请查看传输和路由工厂。