Spring boot 将eventstore与Axon Framework 3和Spring引导一起使用
我正在尝试实现一个简单的分布式应用程序,我想将所有事件保存到事件存储中。 因此,正如Axon的“文档”中所建议的,我希望使用Mysql作为事件存储 因为我对Spring没有太多的经验,所以我不知道如何让它工作。 我将有两个独立的服务,一个用于命令端,另一个用于查询端。由于我计划拥有更多的服务,我想知道如何配置它们以使用外部事件存储(不存储在任何这些服务中) 对于命令和事件的分发,我使用RabbitMQ:Spring boot 将eventstore与Axon Framework 3和Spring引导一起使用,spring-boot,microservices,cqrs,axon,Spring Boot,Microservices,Cqrs,Axon,我正在尝试实现一个简单的分布式应用程序,我想将所有事件保存到事件存储中。 因此,正如Axon的“文档”中所建议的,我希望使用Mysql作为事件存储 因为我对Spring没有太多的经验,所以我不知道如何让它工作。 我将有两个独立的服务,一个用于命令端,另一个用于查询端。由于我计划拥有更多的服务,我想知道如何配置它们以使用外部事件存储(不存储在任何这些服务中) 对于命令和事件的分发,我使用RabbitMQ: @Bean public org.springframework.amqp.core.Exc
@Bean
public org.springframework.amqp.core.Exchange exchange() {
return ExchangeBuilder.fanoutExchange("AxonEvents").build();
}
@Bean
public Queue queue() {
return QueueBuilder.durable("AxonEvents").build();
}
@Bean
public Binding binding() {
return BindingBuilder.bind(queue()).to(exchange()).with("*").noargs();
}
@Autowired
public void configure(AmqpAdmin admin)
{
admin.declareExchange(exchange());
admin.declareQueue(queue());
admin.declareBinding(binding());
}
这将在本地运行的RabbitMQ实例上创建所需的队列(使用默认用户名和密码)
我的问题是:如何配置Axon以使用mysql作为事件存储?因为参考指南目前没有指定这一点,我将在这里指出这一点。 目前,在分发Axon应用程序或将Axon应用程序分离为(微型)服务时,大致有两种方法:
EventMessages
的解决方案,而不是CommandMessages
。
我建议在开源场景中使用或路由您的命令(我已经添加了关于为JGroups和Spring云分发CommandBus
的参考指南页面的链接)
要分发活动,您可以采取三种方法:
EventStore
设置为使用MySQL。要让Axon设置正确的EventStorageEngine
(封面下用于读取/写入事件的infra组件),只需添加对spring boot starter数据jpa
的依赖项即可。
Axon it的自动配置将在该场景中自动注意到您的类路径上有Spring数据JPA,因此将设置
JpaEventStorageEngine
您好,非常感谢您的回答!我正在开发一个开源解决方案,所以我会选择开源的方式。我不知道你为什么说RabbitMQ不受支持:(我想这是因为RabbitMQ是基于AMQP的)。无论如何,我想使用mysql作为事件存储,并使用RabbitMQ(我用于其他东西)分发消息。我想知道如何配置Axon以使用Mysql作为事件存储。感谢您的回复。我已经向您提供了我的答案的更新。我希望它足够了!