SpringBoot安全

如果Spring Security在classpath中,那么web应用默认对所有的HTTP端点使用’basic’认证。为了给web应用添加方法级别(method-level)的安全性,你还可以添加@EnableGlobalMethodSecurity和你想要的设置,额外的信息可以在Spring ...

2017-07-05 05:11:57

阅读数:735

评论数:0

AxonFramework,事件序列化器调优

XStream序列化器XStream是完全可配置和可扩展的。如果你只使用一个无格式XStreamSerializer,有一些速效方案随时取用。XStream允许你为包名称和事件类名称配置别名。别名通常更短(特别是如果你有长包名),使事件的序列化形式更小。由于我们讨论的是XML,所以每个字符从XML...

2017-06-28 15:12:01

阅读数:371

评论数:0

AxonFramework,高级定制

参数解析器你可以配置额外的ParameterResolvers,通过扩展ParameterResolverFactory类和创建一个名为/META-INF/service/org.axonframework.common.annotation.ParameterResolverFactory的文件...

2017-06-27 05:26:31

阅读数:664

评论数:0

AxonFramework,SpringBoot自动配置

Axon支持的SpringBoot自动配置是迄今为止开始配置Axon基础设施组件最简单的选择。只需添加axon-spring-boot-starter依赖性,Axon会自动配置基础设施组件(命令总线,事件总线),以及运行和储存聚合和Saga所需的任何组件。根据在应用程序上下文中的其他组件,如果他们...

2017-06-26 05:56:40

阅读数:1416

评论数:0

AxonFramework,快照(Snapshotting)

当聚合存活很长一段时间,它们的状态不断变化,它们会生成大量的事件。不得不加载所有这些事件去复原一个聚合的状态,可能会有很大的性能影响。快照事件是一个有着特殊用途的领域事件:它将任意数量的事件归纳为单个事件。通过定期创建和存储快照事件,事件存储不必返回长的事件列表。只返回最后一个快照事件和在快照之后...

2017-06-25 06:40:55

阅读数:651

评论数:0

AxonFramework,事件向上转换(Event Upcasting)

由于软件应用程序的不断变化的性质,很可能事件定义也随着时间而变化。由于事件存储被认为是只读和只追加(没有修改和删除)的数据源,所以应用程序必须能够读取所有事件,而不管它们何时添加。这时upcasting 出现了。最初是面向对象编程的一个概念,“一个子类在需要的时候自动转换成超类”,upcastin...

2017-06-24 05:39:27

阅读数:478

评论数:0

AxonFramework,EventStore实现

事件溯源存储库需要一个事件存储(event store)从聚合中存储和加载事件。事件存储提供了一个事件总线的功能,增加了持久化已发布的事件,并能够基于聚合标识符检索事件。Axon提供了一个开箱即用的事件存储,EmbeddedEventStore。它委托事件实际的存储和检索到EventStorage...

2017-06-23 06:31:34

阅读数:3084

评论数:0

AxonFramework,存储库

存储库是提供对聚合访问的机制。存储库充当了用于保存数据的实际存储机制的网关。在CQRS中,存储库只需要能够根据他们的惟一标识符找到聚合。任何其他类型的查询,应该在查询数据库中执行。在Axon Framework中,所有存储库必须实现Repository接口。这个接口规定了三种方法:load(ide...

2017-06-22 06:32:36

阅读数:728

评论数:0

AxonFramework,分发事件

在某些情况下,有必要发布事件到外部系统,比如消息broker。Spring AMQPAxon提供了开箱即用的支持从一个AMQP message broker中转递事件和传递事件到broker中,比如Rabbit MQ。将事件转发到AMQP EchangeSpringAMQPPublisher将事件...

2017-06-21 06:08:29

阅读数:888

评论数:1

AxonFramework,事件发布和处理

由应用程序生成的事件需要被分发到更新查询数据库的组件,搜索引擎或其他需要它们的资源:事件处理程序(Event Handlers)。事件总线(Event Bus)的职责是分发事件消息到所有感兴趣的组件。接收端,事件处理器(Event Processors)负责处理这些事件,其中包括相应的事件处理程序...

2017-06-20 05:31:22

阅读数:707

评论数:0

AxonFramework,分布式命令总线连接器

JGroupsConnector JGroupsConnector使用(正如它的名字已经说明)JGroups作为底层发现和调度机制。描述JGroups的特性有太多的参考指南,请参阅JGroups用户指南以了解更多的细节。因为JGroups既处理节点的发现又处理它们之间的通信,所以JGroupsC...

2017-06-19 05:36:50

阅读数:786

评论数:0

AxonFramework命令拦截器

使用命令总线的优点之一,是能够基于所有传入的命令采取相应的行动。例子是,不论哪种命令类型,你都希望去做日志记录或身份验证。这是使用拦截器来完成的。有不同类型的拦截器:Dispatch拦截器和Handler拦截器。前者在命令被分发到命令处理程序之前被调用。在那时,它甚至不能确定该命令有任何处理器的存...

2017-06-18 06:19:37

阅读数:517

评论数:0

AxonFramework命令总线

命令总线是将命令分发给各自的命令Handler的机制。每个命令总是被精确发送到一个命令Handler。如果没有可用的命令Handler为已分发的命令,将会抛出NoHandlerForCommandException异常。对同一命令类型订阅多个命令Handler将导致订阅互相取代。在这种情况下,最后...

2017-06-17 06:02:20

阅读数:764

评论数:0

AxonFramework命令分发

使用显式的命令分发机制有许多优点。首先,有一个单独的对象,清楚地描述了客户端的意图。通过记录的命令,你可以存储意图和相关资料备查。命令处理也很容易将你的命令处理组件暴露给远程客户端,例如通过web服务。测试也变得更容易,只需定义起始情境(given),就可以定义测试脚本,通过列出一些事件和命令,命...

2017-06-16 06:08:51

阅读数:1085

评论数:0

AxonFramework,测试带注解的Saga

与命令处理组件类似,saga有一个明确定义的接口:它们只对事件作出响应。另一方面,saga通常具有时间概念,并且可以作为事件处理过程的一部分与其他组件交互。Axon Framework的测试支持模块包含帮助你编写saga测试的固件。 每个测试固件包含三个阶段,类似于前面部分描述的命令处理组件固件。

2017-06-15 05:21:15

阅读数:889

评论数:0

AxonFramework测试

CQRS最大的好处之一,尤其是事件溯源就事件和命令而言,单纯地表达测试是可能的。这两个功能组件,事件和命令对领域专家或业务所有者都有明确的含义。这不仅意味着测试表达就事件和命令而言有明确的功能含义,这也意味着他们不依靠任何实现选择。本章描述的特性需要axon-test模块,可通过配置maven依赖...

2017-06-14 05:33:28

阅读数:500

评论数:0

AxonFramework,Saga的基础设施

事件需要被重定向到适当的saga实例。为此,一些基础设施类是必需的。最重要的组件是SagaManager和SagaRepository。Saga Manager与处理事件的任何组件一样,processing也是由事件处理器完成的。然而,因为saga不是单例实例处理事件,但是有独特的生命周期,它们需...

2017-06-13 06:06:33

阅读数:918

评论数:1

Axon Framework跟踪最后期限

当有事发生时,很容易使一个saga采取行动。毕竟,有一个事件要通知saga。但是如果你想让你的saga,在什么事情都没发生的情况下做些什么呢?这就是最后期限。在发票中,通常是几周,而信用卡支付的确认可能在几秒钟内。在Axon中,你可以使用一个EventScheduler计划发布一个事件。在发票的例...

2017-06-12 05:44:03

阅读数:517

评论数:0

Axon Framework事件处理

saga中的事件处理非常接近一个普通的事件监听器。上述的对于方法和参数解析的规则在这里是有效的。不过,有一个主要区别。虽然存在事件监听器只有单个实例处理所有传入事件,但也存在一个saga有多个实例,每个实例都对不同的事件感兴趣。例如,关于Order的id为1的管理业务Saga对Order“2”的事...

2017-06-11 06:47:09

阅读数:601

评论数:0

Axon Framework管理复杂的业务事务

并不是每个命令都能够在一个ACID事务中完全执行。现金转账事务是一个很常见频繁出现的例子,用来作为论据。通常认为,把钱从一个账户转移到另一个账户,绝对需要原子性和一致性。其实并非如此,相反,这是完全不可能的。如果钱从A银行的帐户转移到B银行的帐户怎么办?A银行要获得B银行数据库的锁吗?如果转账正在...

2017-06-10 07:08:36

阅读数:893

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭