我有一個處理Report Run Command的報告運行器聚合。聚合具有目標標識符,並且這兩個命令具有相同的目標標識符。Axon錯誤:java.lang.IllegalArgumentException:工作單元已經有一個具有相同標識符的聚合體
得到以下錯誤
java.lang.IllegalArgumentException異常:工作單元已經具有在org.axonframework.common.Assert.isTrue(Assert.java:54)具有相同標識符 一個聚合〜[axon-core-3.0.6.jar:3.0.6] at org.axonframework.commandhandling.model.AbstractRepository.newInstance(AbstractRepository.java:84)〜[axon-core-3.0.6.jar:3.0。 6] at org.axonframework.commandhandling.AggregateAnnotationCommandHandler $ AggregateConstructorCommandHandler.handle(AggregateAnnotationCommandHandler.java:181)〜[axon-core-3.0.6.jar:3.0.6] at org.axonframework.commandhand ling.AggregateAnnotationCommandHandler $ AggregateConstructorCommandHandler.handle(AggregateAnnotationCommandHandler.java:170)〜[axon-core-3.0.6.jar:3.0.6] at org.axonframework.commandhandling.AggregateAnnotationCommandHandler.handle(AggregateAnnotationCommandHandler.java:148)〜[ axon-core-3.0.6.jar:3.0.6] at org.axonframework.commandhandling.AggregateAnnotationCommandHandler.handle(AggregateAnnotationCommandHandler.java:40)〜[axon-core-3.0.6.jar:3.0.6]
喜歡的東西
public class ExecuteReportsAggregate
{
@AggregateIdentifier
private String reportId;
// Command Handler and Even Source Handlers
}
執行報告命令
@Value
public class ExecuteReportCommand
{
@TargetAggregateIdentifier
String reportId;
}
報告執行的命令
@Value
public class ReportExecutedCommand
{
// @TargetAggregateIdentifier
private String reportId;
}
春天開機看起來像這樣
public static void main(String[] args)
{
ConfigurableApplicationContext config = SpringApplication.run(SsmpPreopenCommand.class, args);
CommandBus commandBus = config.getBean(CommandBus.class);
commandBus.dispatch(GenericCommandMessage.asCommandMessage(new ExecuteReportCommand("12345",
"asdfasdf Errors", "/home/teo", new ServiceCredentials())));
// commandBus.dispatch(GenericCommandMessage.asCommandMessage(new
// ReportExecutedCommand("12345")));
}
我認爲你必須提供相關的'@ CommandHandlers'和'@ EventSourcingHandlers'對我們說些什麼明智的這個代碼。 – Allard