concurrent-seq-file
makes it safe to work on multiple jobs identified by a sequence at the same time.
or more technically..
extends seq-file
to save the lowest completed sequence number from active async processes.
var seq = './test.seq'var importantJob = // stream that emits {seq:numeric id,doc:{}}var follower = ... follower
or without seq-file. if you need to save in a database etc.
api
-
seq = exports(file[,options])
- file - the file name to read the sequence from
- options, optional
- returns the seq function.
-
done = seq(sequenceId)
-
sequenceId is the next incrementing id number of the job you are starting.
-
returns done. call this when you are done with the job.
-
seq = exports.starter(persist,options)
-
use this if you dont want to use seq-file to persist the sequence. like if you need to save it to a db.
-
persist, function(sequenceToSave,cb) a function that you would likle to use to save the sequence
- cb, cb(err,data)
-
returns done. you call this function when you are done working on the job for the sequence. error is bubbled from the persist callback.
notes
job timeouts must be implemented on top of this module. otherwise a job that gets lost in narnia will prvent a new sequence from ever being saved.