Esper events are modeled in clj-esper as regular maps (albeit with some metadata), and can be created with the defevent macro. The new-event function constructs a map with all fields defined (and with their values coerced- although these mappings are a little incomplete currently, they do enough for me :).
( new-event WebRequest :request "/ blah" :http_referer "-" :status 200 )
I had originally started an implementation based around defrecord and building classes …
Esper allows events to contain other maps and complex types. It'd be great to add support for this.
Try an alternate modeling of the output event stream as asequence (rather than the current callback function).
I'm sure there's also a fair bit of the code that could be tidied and improved. I'd welcome any forks and pull requests of the clj-esper GitHub repository .
We ( Forward ) are hiring great developers; if you're interested …
quick intro to StreamSQL, the Esper engine, and a example to apply it to a real-time stream>.batch-processing is not the panacea to every problem. allows us to easily filter, aggregate, and even merge multiple realtime streams to detect correlations, run custom calculations, and much more - all without extra code! A
ESP with Esper
Going from abstract to more concrete, Esper is an which definitely deserves some attention. Started in 2004 by Thomas Bernhardt for a financial application, it is implemented in ESP and correlation engine and provides a fully featured , fast ESP library with a powerful list of extensions. Esper keeps all data structures in memory (no external database required) and is multi-thread safe and able to make use of …
Incidentally, I'm working on tidying up the code that interacts with both ZeroMQ and Esper. When they're a little tidier I'll open-source them and publish on my GitHub account, and most likely post an article or two here too. Stay tuned!