事件溯源存储库需要一个事件存储(event store)从聚合中存储和加载事件。事件存储提供了一个事件总线的功能,增加了持久化已发布的事件,并能够基于聚合标识符检索事件。 Axon提供了一个开箱...
存储库是提供对聚合访问的机制。存储库充当了用于保存数据的实际存储机制的网关。在CQRS中,存储库只需要能够根据他们的惟一标识符找到聚合。任何其他类型的查询,应该在查询数据库中执行。 ...
在某些情况下,有必要发布事件到外部系统,比如消息broker。 Spring AMQP Axon提供了开箱即用的支持从一个AMQP message broker中转递事件和传递事件到broker中,比如Rabbit MQ。 将事件转发到...
由应用程序生成的事件需要被分发到更新查询数据库的组件,搜索引擎或其他需要它们的资源:事件处理程序(Event Handlers)。事件总线(Event Bus)的职责是分发事件消息到所有感兴趣的组件。...
JGroupsConnector JGroupsConnector使用(正如它的名字已经说明)JGroups作为底层发现和调度机制。描述JGroups的特性有太多的参考指南,请参阅JGroups用户指南以了解更多的细节。 因为JGroups既...
使用命令总线的优点之一,是能够基于所有传入的命令采取相应的行动。例子是,不论哪种命令类型,你都希望去做日志记录或身份验证。这是使用拦截器来完成的。 有不同类型的拦截器:Dispatch拦...
命令总线是将命令分发给各自的命令Handler的机制。每个命令总是被精确发送到一个命令Handler。如果没有可用的命令Handler为已分发的命令,将会抛出NoHandlerForCommandException异常。对同一...
使用显式的命令分发机制有许多优点。首先,有一个单独的对象,清楚地描述了客户端的意图。通过记录的命令,你可以存储意图和相关资料备查。命令处理也很容易将你的命令处理组件暴露给远程客户...
与命令处理组件类似,saga有一个明确定义的接口:它们只对事件作出响应。另一方面,saga通常具有时间概念,并且可以作为事件处理过程的一部分与其他组件交互。Axon Framework的测试支持模块包...
事件需要被重定向到适当的saga实例。为此,一些基础设施类是必需的。最重要的组件是SagaManager和SagaRepository。 Saga Manager 与处理事件的任何组件一样,processing也是由事件处理器完成的...
当有事发生时,很容易使一个saga采取行动。毕竟,有一个事件要通知saga。但是如果你想让你的saga,在什么事情都没发生的情况下做些什么呢?这就是最后期限。在发票中,通常是几周,而信用卡支...
saga中的事件处理非常接近一个普通的事件监听器。上述的对于方法和参数解析的规则在这里是有效的。不过,有一个主要区别。虽然存在事件监听器只有单个实例处理所有传入事件,但也存在一个sag...
并不是每个命令都能够在一个ACID事务中完全执行。现金转账事务是一个很常见频繁出现的例子,用来作为论据。通常认为,把钱从一个账户转移到另一个账户,绝对需要原子性和一致性。其实并非如此...
建议在包含处理状态命令的聚合中直接定义命令处理器,因为命令处理器有可能需要该集合的状态来执行其任务。 要在一个聚合上定义一个命令处理器,只需用@CommandHandler注解命令处理方法即可。...
除了存储一个聚合的当前状态,还可以根据过去发布的事件恢复一个聚合的状态。为此,所有状态的更改必须由一个事件来表示。 主要部分,事件溯源聚合类似于“有规律”聚合:他们必须声明一个标...
在一个基于CQRS的应用程序中,领域模型(由Eric Evans和Martin Fowler定义)可以是一个非常强大的机制,来驾驭在验证和执行状态的变化时所涉及的复杂性,虽然典型的领域模型提供了大量的构建块...
获得一个默认的配置是非常容易的: Configuration config = DefaultConfigurer.defaultConfiguration().buildConfiguration(); 这个配置为分发消息提供了在线程上处理消息、分发它们的实现。...
工作单元是Axon Framework的一个重要的概念,虽然在大多数情况下你可能不太直接与它交互。消息的处理被视为一个独立单元。工作单元的目的是在处理一条消息(命令或事件)期间去协调行为的执行。...
消息传送的概念 消息是Axon的核心概念之一。组件之间的所有通信都使用消息对象完成。这为这些组件提供了位置透明性,在必要时需要能够进行扩展和分发这些组件。 尽管所有这些消息都实现了消息...
没有更多内容
加载失败,请刷新页面