分发Command到对应的CommandHandler中
每个Command只会发送到一个Hanlder中
多个时,最后一个覆盖前面
SimpleCommandBus
在发送command的线程里执行Handler
保存Aggregate状态和发送事件也都在同一线程中
适用于大多数情况,默认配置
AsynchrounousCommandBus
启动新的线程
通过CachedThreadPool创建线程,默认60s清空闲置线程
DistributedCommandBus
<span>在不同JVM的commandbus之间建立一个“桥梁”</span>
每个JVM上的DistributedCommandBus称之为segment
要求提供以下两个参数
CommandRouter
指明应当把Command发到哪里
其实现必须提供Routing Strategy
MetaDataRoutingStrategy使用CommandMessage中的MetaData的property来找到路由key
AnnotationRoutingStrategy使用Command中@TargetIdentifier标识的属性作为路由key,默认使用。
CommandBusConnector管理链接,提供发送、订阅方法
JGroupsConnector
SpringCloudConnector
通过结合AMQP实现分布式事件分发与处理
CommandGateway
对CommandBus的一个封装,方便发送Command