broadway/broadway-demo

使用Broadway的演示应用程序

0.3.0 2020-03-08 14:02 UTC

README

此存储库包含一个演示应用程序,展示如何在Symfony应用程序中使用Broadway。示例来自Practical Event Sourcing讲座,由Mathias Verraes提供。

为了简化,演示使用官方的DBAL事件存储和自定义DBAL读取模型实现。您需要安装SQLite才能运行演示。

build status

运行演示

composer install
bin/console broadway:event-store:create
bin/console broadway:read-model:create
bin/console server:run

此演示没有GUI,只有一个API,以下是一些端点

# pick up a new basket
$ curl -X POST http://localhost:8000/basket
{
  "id":"1bd683ac-f75d-403f-babc-82ddcdb33de7"
}

# add products to the basket
$ curl -d "productId=2009&productName=Incredibad" -X POST http://localhost:8000/basket/1bd683ac-f75d-403f-babc-82ddcdb33de7/addProduct
$ curl -d "productId=2011&productName=Turtleneck+%26+Chain" -X POST http://localhost:8000/basket/1bd683ac-f75d-403f-babc-82ddcdb33de7/addProduct
$ curl -d "productId=2013&productName=The+Wack+Album" -X POST http://localhost:8000/basket/1bd683ac-f75d-403f-babc-82ddcdb33de7/addProduct

# remove a product from the basket
curl -d "productId=2009" -X POST http://localhost:8000/basket/1bd683ac-f75d-403f-babc-82ddcdb33de7/removeProduct

# check out the basket
$ curl -X POST http://localhost:8000/basket/1bd683ac-f75d-403f-babc-82ddcdb33de7/checkout

# get _Other people also bought this_ list
$ curl http://localhost:8000/advice/2011
{
  "purchasedProductId": 2011,
  "otherProducts": {
    "2009": 1,
    "2013": 1
  }
}

运行测试

要运行所有测试

./vendor/bin/phpunit

代码结构

  • 领域代码可以在src/Basket中找到
  • 读取模型代码可以在src/ReadModel中找到
  • 控制器可以在src/Controllers中找到

注意,有两个服务文件:services.yamldomain.yaml。其中,domain.yaml包含所有领域特定服务(CommandHandler、ReadModels、Repositories),而services.yaml包含领域非特定服务(控制器等)。

领域特定测试可以在test/Baskettest/ReadModel中找到

注意,在test/Functional中有一个功能测试

有关此演示的更多信息,请阅读我们的博客文章:http://labs.qandidate.com/blog/2014/12/30/a-broadway-demo-application/