UNPKG

noflo-runtime-msgflo

Version:

NoFlo runtime for Node.js over AMQP/MQTT etc

87 lines (59 loc) 3.23 kB
noflo-runtime-msgflo ==================== [NoFlo](https://noflojs.org) runtime, designed for use with [msgflo](https://github.com/the-grid/msgflo). Loads a NoFlo graph and registers it as a msgflo participant. The exported ports of the NoFlo network then becomes accessible through message queues ([AMQP](http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol) or [MQTT](http://en.wikipedia.org/wiki/MQTT)), and msgflo can coordinate how multiple such networks send data between eachother. Will eventually allow a single entry-point for [FBP runtime protocol](http://noflojs.org/documentation/protocol) clients (like [Flowhub](http://flowhub.io)) to access NoFlo FBP networks that span multiple nodes. Usage ------ Using the commandline tool noflo-runtime-msgflo --name myworker --graph project/WorkerGraph --broker amqp://foo.cloudamqp.com/bar Altenatively one can use the embedding API, see [src/mount.coffee](./src/mount.coffee) runtime = require 'noflo-runtime-msgflo' options = name: 'gssmeasure' graph: 'the-grid-api/PrecomputeGss', basedir: __dirname broker: config.amqp.url, rt = new runtime.mount.Mounter options rt.start (err, rt) -> # started ## Debugging noflo-runtime-msgflo supports [flowtrace](https://github.com/flowbased/flowtrace) allows to trace & store the execution of the NoFlo network, so you can debug any issues that would occur. You can enable tracing using `--trace` commandline argument, or via the `trace:start` [FBP runtime protocol](http://noflojs.org/documentation/protocol/#trace) message. noflo-runtime-msgflo --graph project/MyMainGraph --trace To trigger dumping a flowtrace locally, send the `SIGUSR2` Unix signal kill -SIGUSR2 $PID_OF_PROCESS ... Wrote flowtrace to: /tmp/1151020-12063-ami5vq.json Or, to trigger a flowtrace remotely, send a `trace:dump` FBP protocol message to the queue of participant. msgflo-send-message --queue .fbp.$participantId.receive --json '{ "protocol":"trace", "command":"dump", "payload":{ "graph":"default", "type":"flowtrace.json"} }' Then, assuming `.fbp.$participantId.send` has been bound to queue `my-flowtraces`, one could download it msgflo-dump-message --queue my-flowtraces --amount 1 You can now use various flowtrace tools to introspect the data. For instance, you can get a human readable log using `flowtrace-show` flowtrace-show /tmp/1151020-12063-ami5vq.json -> IN repeat CONN -> IN repeat DATA hello world -> IN stdout CONN -> IN stdout DATA hello world -> IN repeat DISC -> IN stdout DISC Optimizing startup time ---- Since NoFlo 0.7 [FBP manifest](https://github.com/flowbased/fbp-manifest) is used, making it possible to cache components which turns process startup faster due to less disk IO. To cache graph's components, first install `noflo` and run `noflo-cache-preheat` to create the FBP manifest file `fbp.json`. Then run the graph passing the cache parameter: noflo-runtime-msgflo --cache true --name myworker --graph project/WorkerGraph --broker amqp://foo.cloudamqp.com/bar TODO ----- ### 0.3 * Implement [FBP protocol over msgflo](https://github.com/noflo/noflo-runtime-msgflo/issues/30) transport