Distributed and persistent events bus in Haskell

Hello, I am implementing an application using event sourcing as primary storage for data, which implies I need a way to durably and reliably store streams of events on stable storage. I also need to be able to have an event distribution system on top of that persistent storage so that components can subscribe to stored events. So far I have implemented a simple store, e.g. a flat file, which reuses the format of Apache Kafka (just in case...). Not very robust nor sophisticated but can work for moderate loads. Now I am looking for the event distribution part in the hope of being able to reuse some distributed event bus system that might exist somewhere and not having to roll my own. I have had a look couple of months ago at Vaultaire, Marquise and friends, but I am not sure they are really suited to my use case: They seem to be geared toward very high workload and throughput, like log or huge data streams analysis. Thanks for any pointer you might share, -- Arnaud Bailly twitter: abailly skype: arnaud-bailly linkedin: http://fr.linkedin.com/in/arnaudbailly/

If you do end up going with the Kafka route, there is a native Haskell client: https://github.com/tylerholien/milena Arnaud Bailly writes:
Hello,
I am implementing an application using event sourcing as primary storage for data, which implies I need a way to durably and reliably store streams of events on stable storage. I also need to be able to have an event distribution system on top of that persistent storage so that components can subscribe to stored events.
So far I have implemented a simple store, e.g. a flat file, which reuses the format of Apache Kafka (just in case...). Not very robust nor sophisticated but can work for moderate loads. Now I am looking for the event distribution part in the hope of being able to reuse some distributed event bus system that might exist somewhere and not having to roll my own.
I have had a look couple of months ago at Vaultaire, Marquise and friends, but I am not sure they are really suited to my use case: They seem to be geared toward very high workload and throughput, like log or huge data streams analysis.
Thanks for any pointer you might share,
-- Kyle Marek-Spartz

Cool! however, I would rather avoid having to manage kafka, if something simpler exists :-) I know there is also a mature zeromq client so given I already have the persistent part, I could probably leverage that but I thought somebody might have already treaded that path... Thanks a lot for the pointer, anyway. -- Arnaud Bailly twitter: abailly skype: arnaud-bailly linkedin: http://fr.linkedin.com/in/arnaudbailly/ On Tue, Apr 7, 2015 at 5:26 PM, Kyle Marek-Spartz < kyle.marek.spartz@gmail.com> wrote:
If you do end up going with the Kafka route, there is a native Haskell client:
https://github.com/tylerholien/milena
Arnaud Bailly writes:
Hello,
I am implementing an application using event sourcing as primary storage for data, which implies I need a way to durably and reliably store streams of events on stable storage. I also need to be able to have an event distribution system on top of that persistent storage so that components can subscribe to stored events.
So far I have implemented a simple store, e.g. a flat file, which reuses the format of Apache Kafka (just in case...). Not very robust nor sophisticated but can work for moderate loads. Now I am looking for the event distribution part in the hope of being able to reuse some distributed event bus system that might exist somewhere and not having to roll my own.
I have had a look couple of months ago at Vaultaire, Marquise and friends, but I am not sure they are really suited to my use case: They seem to be geared toward very high workload and throughput, like log or huge data streams analysis.
Thanks for any pointer you might share,
-- Kyle Marek-Spartz
participants (2)
-
Arnaud Bailly
-
Kyle Marek-Spartz