-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Provide a kafka streams/event stores based event log #47
Comments
@SemanticBeeng that's the topic I thought a lot about. When you use Kafka as an event log you loose the ability to query events by entity key. Imagine the time you need to recover the whole system in case you need to change how you fold an entity state? Also, runtime state that uses KTable or similar is eventually consistent which is acceptable for read side, but not for write side. |
Please help me understand better your points, especially "acceptable for read side, but not for write side.". But for "ability to query events by entity key." we could use a separate topic per entity. Again, please explain a bit deeper to see what I am missing since have not thought as much as you. |
I think there are limitations to Apache Pulsar is also an interesting middleware to explore as a target, it supports both a topic/pub-sub interface as well as a queue interface (suitable for work scheduling for example) and it scales to millions of topics, therefore it's conceivable you could have a topic for each host in your akka cluster processing and therefore if you're doing something similar to an Ask pattern you might be able to implement a direct (and durable) return to sender reply without finishing to be routed via akka remoting (but then you need to figure out what happens if the host which Asked something dies). Apologies if this explains something obvious. I also didn't understand what was meant by "acceptable for read side, but not for write side", in Lagom Read Side Processor designates a role processes the Events (in the Command (input)-> State (hidden) -> Event (output) sense) and then prepares some sort of a view which is query-able or more optimised for some sort of read pattern. Are you talking about the problem arising of re-processing Commands which requires some sort of strategy to de-dupe the already processed ones? |
@schrepfler what I mean is that you can’t use eventually consistent KTable to validate commands against. |
From latest post of Vladimir : https://pavkin.ru/aecor-part-4a/ Highlight of similarity between the And mention to |
There is a promising Akka Persistence journal implementation based on both Cassandra and Kafka. You may want to take a look at the trade-offs made. |
Feature request as per
https://blog.softwaremill.com/event-sourcing-using-kafka-53dfd72ad45d
This way, the concepts of "entity" from
akka persistence
and "runtime state" fromevent stores
complement each other.Ideally
akka persistence
runtime would not be necessary to runaecor
.The text was updated successfully, but these errors were encountered: