- Notifications
You must be signed in to change notification settings - Fork13
Distributed Flow-Based Programming via message queues
License
msgflo/msgflo
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Implementation of theFlow-Based Programmingusing message queues as the communications layer between different processes.Initial message queue transports targeted areAMQPandMQTT.
MsgFlo lets you build robust polyglot FBP systems spanning multiple computers/devices.A node can be implemented in any language, to reuse existing code, libraries and developer know-how.
In FBP each component is a black-box that processes and produces data,without knowledge about where the input data comes from, or where the output data goes.This ensures that a service is easy to change, and facilitates automated testing.
MsgFlo is designed to enable partial and gradual integration into existing systems;by using standard broker/transports, not placing restrictions on message payloads,allowing to use existing queue names, and integrating non-MsgFlo nodes seamlessly.
In Production
- Used in production atTheGrid website builder, withAMQP/RabbitMQ. 20 roles, 1'000'000 jobs/weekly+
- Used in production inimgflo image processing server. 4 roles, 200'000 jobs/weekly+
- Used for IoT networks at hackerspacesc-baseandBitraf, usingMQTT/Mosquitto.
Client support
- msgflo-nodejs makes it easy to makeNode.js participants inJavaScript/CoffeeScript
- noflo-runtime-msgflomakes it super easy to useNoFlo in the participants
- Basic support forC++ participants withmsgflo-cpp andMicroFlo
- Basic support forPython participants withmsgflo-python
- Basic support forbrowser participants withmsgflo-browser
- Basic support forArduino participants withmsgflo-arduino
- Experimental support forRust participants withmsgflo-rust
Tooling
msgflo
executable implements theFBP runtime protocol.- Initial support for automated testing usingfbp-spec
- Experimental support for visually building networks usingFlowhub
- guv provides autoscaling of workers when using Heroku/AMQP.
MIT, see./LICENSE
Please refer tohttps://msgflo.org
MsgFlo is a part ofFlowhub, a platform for building robustIoT systems and web services.
We offer anIntegrated Development Environment andconsulting services.
The msgflo executable, as well as the transport/participant libraryuses thedebug NPM module.You can enable (all) logging using:
export DEBUG=msgflo*
About
Distributed Flow-Based Programming via message queues