event-log
v2.1.6
Published
An append only event log with streaming support
Downloads
2
Readme
event-log
An append only event log with streaming support
Example
An event-log is currently coupled to mongo and backed by two collection. A capped real time collection of events and a historic collection.
You configure the event log with a time to live, this means that
the event log will keep events in memory for that period of
time. If you try to read()
from the log for any events
older then Date.now() - timeToLive
it will not return them.
The event log is designed for real time events and should be used in combination with snapshots, i.e. you read the recent state from a concrete snapshot and merge in real time data from the event log on the fly, preferably in the browser.
var eventLog = require("event-log")
var fold = require("reducers/fold")
/* get a mongoDB guy somehow */
var db = someMongoDb
db.createCollection("event-log.realtime", {
capped: true
, size: 100000
}, function (err, res) {
/* ensure that the real time collection is capped */
/* this allows us to use tailable cursors */
})
var realtimeCollection = db.collection("event-log.realtime")
var rawCollection = db.collection("event-log")
var log = eventLog(realtimeCollection, {
timeToLive: 60 * 60 * 1000 /* HOUR */
, rawCollection: rawCollection
})
/* each piece of data being added MUST have a timestamp */
log.add("event-type", {
/* some data */
timestamp: Date.now()
})
/* infinite stream of data */
var stream = log.read(Date.now() - 1000)
fold(stream, function (item) {
/* item from event log */
})
Installation
npm install event-log
Contributors
- Raynos