Command Bus

Command Bus 接收 Command 并将它们路由给 Command Handler. 每个 Command Handler 负责一个特定的 Command 类型并根据 command 的内容执行操作逻辑。

Command Handler 可以在 command bus 上订阅和退订特定类型的command。一种类型的命令只能被一种handler订阅。

在某些情况下,也可以执行操作逻辑而不管实际的命令类型,如验证、日志或认证。

Axon的实现

Axon 中 CommandBus 的实现类和继承结构:

Command Bus - 图1

  • CommandBus

    接口定义

  • RecordingCommandBus

    不在订阅或者分配命令时执行任何操作,只做记录。

  • SimpleCommandBus

    CommandBus 的实现,分配命令给订阅到特定命令类型的handler。可以配置拦截器来添加对命令的处理,而不管他们的类型,例如日志,安全(认证),sla监控,等等。

  • AsynchronousCommandBus

    SimpleCommandBus的特殊版本,异步处理命令。默认使用Cached Thread Pool,也可以传入指定的 Executor。

  • DisruptorCommandBus

    性能非常高的异步 CommandBus 实现。

  • DistributedCommandBus

    分布式的 CommandBus 实现,由多个 CommandBus 的实例组成,并一起工作来分担负载。