我正在尝试实现一个简单的分布式应用程序,并且我想将所有事件保存到事件存储中。出于这个原因,正如 Axon here的“文档”中所建议的那样,我想使用 Mysql 作为事件存储。
由于我对 Spring 没有太多经验,因此我无法理解如何使其工作。我将有两个单独的服务,一个用于命令端,一个用于查询端。由于我计划提供更多服务,因此我想知道如何将它们配置为使用外部事件存储(不存储在任何这些服务中)。
对于命令和事件的分发,我使用的是 RabbitMQ:
@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 作为事件存储?