1

我有一个使用框架Axon 3构建的应用程序。

  • 有2个实例(jvm)
  • 第一个处理命令并通过 RabbitMQ 通知第二个构建读取模型数据库。
  • 此应用程序有一个事件存储(MongoDB)

现在我想构建第三个实例,是否可以通过 RabbitMQ 重播第一个实例的所有历史事件以构造第三个实例的初始状态?以及如何配置它?

我尝试使用文档 Axons来寻求答案,似乎我应该使用TrackingEventProcessor而不是默认的SubscribingEventProcessor,但它不允许与 SpringAMQPMessageSource 一起使用(在文档中提到)

4

1 回答 1

2

Axon 有两种模式:跟踪和订阅。根据您的事件来源,您可以选择一种或有时两种风格。

AMQP 是消息代理的规范。一旦消息被传递,它就会从它所在的队列中删除。因此,从概念上讲,不可能重播这些事件,因为它们不再存在于代理中。

如果重播很重要,请确保使用存储消息的消息传递机制。在 Axon 中,EventStore 正是这样做的。目前,Axon 只有 EmbeddedEventStore,但您可以让接收节点中的 Event Store 指向与发送节点相同的数据库。

目前,在 AxonIQ,我们正在开发一个事件存储服务器,它以更简洁的方式处理这个问题(无需在实例之间共享数据源)。

于 2017-07-06T19:17:02.900 回答