Hi Allard, not sure if I understand/agree:)
Let me give an example. Let’s say we extend the ToDo tutorial even more, adding the possibility to perform three different steps on the ToDo before it’s completed, and that each event corresponding to the different command prints out a message that the even has happened, like this:
private void run() {
final String itemId = UUID.randomUUID().toString();
commandGateway.send(new CreateToDoItemCommand(itemId, “Need to do this”));
commandGateway.send(new PerformToDoStep1Command(itemId, “Step 1 of ToDo”));
commandGateway.send(new PerformToDoStep2Command(itemId, “Step 2 of ToDo”));
commandGateway.send(new PerformToDoStep3Command(itemId, “Step 3 of ToDo”));
commandGateway.send(new MarkCompletedCommand(itemId));
}
The output I get is this (from the event handlers):
We’ve got something to do: Need to do this (19d7cf6a-d252-4e7d-9d85-51f7249fd13e)
We’ve got something to do: Need to do this (19d7cf6a-d252-4e7d-9d85-51f7249fd13e)
We’ve completed step 1: 19d7cf6a-d252-4e7d-9d85-51f7249fd13e
We’ve got something to do: Need to do this (19d7cf6a-d252-4e7d-9d85-51f7249fd13e)
We’ve completed step 2: 19d7cf6a-d252-4e7d-9d85-51f7249fd13e
We’ve got something to do: Need to do this (19d7cf6a-d252-4e7d-9d85-51f7249fd13e)
We’ve completed step 3: 19d7cf6a-d252-4e7d-9d85-51f7249fd13e
We’ve got something to do: Need to do this (19d7cf6a-d252-4e7d-9d85-51f7249fd13e)
We’ve completed a task: 19d7cf6a-d252-4e7d-9d85-51f7249fd13e
BUT, my assumption is that I should get output like this:
We’ve got something to do: Need to do this (19d7cf6a-d252-4e7d-9d85-51f7249fd13e)
We’ve completed step 1: 19d7cf6a-d252-4e7d-9d85-51f7249fd13e
We’ve completed step 2: 19d7cf6a-d252-4e7d-9d85-51f7249fd13e
We’ve completed step 3: 19d7cf6a-d252-4e7d-9d85-51f7249fd13e
We’ve completed a task: 19d7cf6a-d252-4e7d-9d85-51f7249fd13e
Why is always the create event message shown between each new event arriving, and if you’re statement is correct (that for each new event arriving it should replay everything from the past), then the output should look like this:
We’ve got something to do: Need to do this (19d7cf6a-d252-4e7d-9d85-51f7249fd13e)
We’ve got something to do: Need to do this (19d7cf6a-d252-4e7d-9d85-51f7249fd13e)
We’ve completed step 1: 19d7cf6a-d252-4e7d-9d85-51f7249fd13e
We’ve got something to do: Need to do this (19d7cf6a-d252-4e7d-9d85-51f7249fd13e)
We’ve completed step 1: 19d7cf6a-d252-4e7d-9d85-51f7249fd13e
We’ve completed step 2: 19d7cf6a-d252-4e7d-9d85-51f7249fd13e
We’ve got something to do: Need to do this (19d7cf6a-d252-4e7d-9d85-51f7249fd13e)
We’ve completed step 1: 19d7cf6a-d252-4e7d-9d85-51f7249fd13e
We’ve completed step 2: 19d7cf6a-d252-4e7d-9d85-51f7249fd13e
We’ve completed step 3: 19d7cf6a-d252-4e7d-9d85-51f7249fd13e
We’ve got something to do: Need to do this (19d7cf6a-d252-4e7d-9d85-51f7249fd13e)
We’ve completed step 1: 19d7cf6a-d252-4e7d-9d85-51f7249fd13e
We’ve completed step 2: 19d7cf6a-d252-4e7d-9d85-51f7249fd13e
We’ve completed step 3: 19d7cf6a-d252-4e7d-9d85-51f7249fd13e
We’ve completed a task: 19d7cf6a-d252-4e7d-9d85-51f7249fd13e
So, am I missing some “basic event sourcing knowledge”, or have I implemented something wrong, is it a bug somewhere, or?
Best regards,
Viggo