prooph/service-bus

支持CQRS和DDD的PHP企业级服务总线实现

v6.3.0 2021-08-25 17:08 UTC

README

PHP 7.1+ 轻量级消息总线,支持CQRS和微服务

Build Status Coverage Status Gitter

重要

本库将支持至2019年12月31日,之后将被弃用。

有关更多信息,请参阅官方公告:[链接](https://www.sasaprolic.com/2018/08/the-future-of-prooph-components.html)

消息API

prooph/service-bus是一个轻量级消息外观。它允许您通过消息来定义模型API。

  1. 命令消息描述模型可以处理的操作。
  2. 事件消息描述模型处理命令时发生的事情。
  3. 查询消息描述可以从您的(读取)模型中检索到的可用信息。

prooph/service-bus保护了您的模型。数据输入和输出端口变得无关紧要,不再影响业务逻辑。我们关注的是六边形架构。

prooph/service-bus将您的模型与任何框架解耦。您可以使用像Zend、Symfony、Laravel这样的Web框架来处理http请求,并通过prooph/service-bus将它们传递给模型,但您也可以通过CLI或从像RabbitMQ或Beanstalkd这样的消息系统中接收相同的消息。

它也非常适合微服务架构,因为它为基于消息的跨服务通信提供了一层抽象。

prooph_architecture

安装

您可以通过运行 composer require prooph/service-bus 来使用composer安装prooph/service-bus,这将安装最新版本并作为对composer.json的要求。

快速开始

<?php

use Prooph\ServiceBus\CommandBus;
use Prooph\ServiceBus\Example\Command\EchoText;
use Prooph\ServiceBus\Plugin\Router\CommandRouter;

$commandBus = new CommandBus();

$router = new CommandRouter();

//Register a callback as CommandHandler for the EchoText command
$router->route('Prooph\ServiceBus\Example\Command\EchoText')
    ->to(function (EchoText $aCommand): void {
        echo $aCommand->getText();
    });

//Expand command bus with the router plugin
$router->attachToMessageBus($commandBus);

//We create a new Command
$echoText = new EchoText('It works');

//... and dispatch it
$commandBus->dispatch($echoText);

//Output should be: It works

现场编码介绍

Prooph Service Bus v6

文档

文档位于docs树中,可以使用bookdown进行编译。

$ php ./vendor/bin/bookdown docs/bookdown.json
$ php -S 0.0.0.0:8080 -t docs/html/

然后浏览到http://localhost:8080/

支持

贡献

请自由地分叉并扩展现有功能或添加新功能,并通过带有您更改的拉取请求!为了建立一致的代码质量,请为您的所有更改提供单元测试,并可能更新文档。

许可

在新BSD许可证下发布。