Storm Bolts without the overhead.
var through = require('through2')
var createBolt = require('blt')
createBolt(splitSentence)
function splitSentence(configuration) {
var splitStream = through.obj(splitWords)
return splitStream
function splitWords(obj, _, next) {
obj.tuple[0].split(' ').forEach(function(word) {
splitStream.push(word)
})
splitStream.emit('ack', obj)
next()
}
}
blt(createStream, _opts)
-
createStream
is a function that can be called with a configuration object and returns a Duplex Stream. -
_opts
is an optional configuration object accepting options:anchored
- a Boolean indicating whether you prefer this bolt to provide anchors to Storm.
-
blt
will write tuple objects directly to the returned stream. -
If
anchored
is true, the stream is expected to stream arrays of form:[data, tuples]
, wheredata
is the data to emit, andtuples
is the Storm tuple(s) that it is anchored to.
- When your stream emits data,
blt
emits the data packaged up in Storm's tuple format with all of the applicable anchoring data. - If your stream emits a "log" event with an argument,
blt
passes it along to Storm as a "log" event with that argument. - If your stream emits a "fail" event with the relevant tuple,
blt
will "fail" for you. - If your stream emits an "ack" event with the relevant tuple,
blt
will "ack" for you.
blt
handles all of the Storm-specific aspects of constructing Bolt streams for
Storm.
- Creates PID file and handshakes with Storm at startup.
- Handles responding to heartbeats.
- This is experimental and relatively untested, use at your own risk!
- This module is somewhat optimized for a simplified use-case, if you need more, try storm-stream or node-storm.
- For a more magical approach, check out garlic.
MIT