容器互操作感知命令总线

1.0.0 2016-12-01 20:40 UTC

This package is auto-updated.

Last update: 2024-08-29 04:32:38 UTC


README

微服务命令/事件框架

Commander将HTTP请求映射到命令处理器,并监听框架事件。

如何使用

  1. 编写命令处理器

    • 确保触发CompletedEvent
    • 确保触发ErrorEvent
  2. 告诉commander处理器的端点

  3. 处理你的事件

用例

目前我们仅支持JSON API。

简单示例

$commander = new Commander();
$this->commander->get('/user/{id}', 'user.cache.get', SimpleGetUserHandler::class);
$commander->run();


//In SimpleGetUserHandler
class SimpleGetUserHandler extends Handler
{
    /**
     * @param CommandInterface $command
     */
    public function handle(CommandInterface $command)
    {
        $this->eventBus->notify(CompletedEvent::makeEvent(['id' => '1'])); //fill in the user info
    }
}

为什么??

  • CQRS!
  • 更少的样板代码。
  • 更高的可测试性。
  • 没有控制器或控制器操作...
  • 更好的资源使用

框架事件

你可以订阅以下框架事件

  • Framework.Complete

    • 当响应完成时触发此事件
    • 负载:用户定义
  • Framework.Error

    • 如果某处发生错误,将触发此事件
    • 负载:用户定义或框架错误为["message" => "..."]
  • Framework.CommandBus.Handle

    • 当命令处理器即将执行时触发此事件
    • 负载:[CommandKey]
  • Framework.Invoke

    • 当命令即将被发送到命令总线时触发此事件
    • 负载:["commandKey" => "", "commandClass" => ""]
  • Framework.EventBus.Notify

    • 当事件即将发送到事件总线时触发此事件
    • 不会传播Framework.EventBus.Notify的
    • 负载:callable... [$object, "method"]

待办事项

  • 事件负载
    • JsonPayload
    • TextPayload
    • XMLPayload

贡献者