在Axon Framework中,聚合是存储在事件存储库中的对象。在应用程序重启后,需要重新装载聚合的状态。 要重新启动聚合,我们需要查找存储聚合的事件的事件存储库,并根据此事件存储库更新聚合状态。
下面是一个例子,展示如何在Axon Framework中重新激活聚合。在这个示例中,我们将考虑一个简单的Todo应用程序。
首先,我们定义了一个Todo聚合:
public class Todo {
private String id;
private String description;
private boolean completed;
private Todo() {}
// constructors and methods
}
我们将通过处理两个不同的事件来更新Todo聚合的状态,即TodoCreatedEvent和TodoCompletedEvent。首先,我们在Todo创建时处理TodoCreatedEvent:
public class TodoCreatedEvent {
private final String id;
private final String description;
public TodoCreatedEvent(String id, String description) {
this.id = id;
this.description = description;
}
// getters for id and description
}
public class TodoAggregate {
private String id;
private String description;
private boolean completed;
@AggregateIdentifier
private String todoId;
private TodoAggregate() {}
@CommandHandler
public TodoAggregate(CreateTodoCommand cmd) {
apply(new TodoCreatedEvent(cmd.getId(), cmd.getDescription()));
}
@EventSourcingHandler
public void on(TodoCreatedEvent evt) {
this.id = evt.getId();
this.description = evt.getDescription();
this.todoId = evt.getId();
}
@CommandHandler
public void complete(CompleteTodoCommand cmd) {
apply(new TodoCompletedEvent(todoId));
}
@EventSourcingHandler
public void on(TodoCompletedEvent evt) {
this.completed = true;
}
}
接下来,我们在Todo完成时处理TodoCompletedEvent。
public class TodoCompletedEvent {
private final String id;