Comments (5)
A major problem with option 2) is that is requires changes to the Participant code, making it impossible to use existing/foreign participants. This would limit use to systems where one has complete control over each node. And make nodes participate in multiple networks/system very difficult.
So the way forward seems to be the bindings approach.
Note that we might want to have minimal support for participants self-initializing with possibly matching queues, but this will then be secondary. Major reason for this right now is allowing use on Heroku/AMQP without needing Coordinator to set up communication...
For MQTT and similar systems where the Broker cannot provide this functionality, a helper will be used by the Coordinator to perform this role. Probably hidden behind the transport.MessageBroker
interface.
from msgflo.
Another problem is consoliating the need for various type of communication stategies. For instance in http://github.com/jonnor/imgflo-server we want round-robin between API frontend and the workers, but the result from worker should be communicated back to the API frontend which made the processing request.
The back-comm can be done using either a reply-to/peer-based model, or pub-sub.
Current thinking is to make edges be pub-sub by default (currently its transport dependent), and let a special router component implement round-robin. In AMQP (and other transports with neccesary capabilities) this would not actually be code in the coordinator, but instead just configure the broker suitably. On MQTT etc it will be implemented using a helper in the coordinator.
ACK/NACK would the be optional??
from msgflo.
All transports are now pub-sub by default. Need to still develop a msgflo/RoundRobin
type component/participant
from msgflo.
RoundRobin now exists since 1+week
from msgflo.
Inside one role on AMQP, round-robin is the default since 2016. One can use msgflo/PubSub
pseudo-component in order for all participant of a single-role to all get the message. Example usage in imgflo-server
from msgflo.
Related Issues (20)
- Edges in auto-saved JSON contain namespace HOT 1
- Packets sent twice to FBP protocol client
- Removed nodes don't get removed from graph JSON HOT 3
- Make coordinator send IIPs HOT 1
- Auto-saving nukes IIPs from JSON graph
- Participant queues/IIP setup should be done always on discovery
- MsgFlo coordinator didn't stop participant when clearing and re-sending graph HOT 3
- MsgFlo coordinator crashes if ignored participant doesn't send discovery message
- Validate discovery messages against JSON schema HOT 2
- Error when user tries to open a component that has registered through the discovery messages HOT 1
- An in-range update of fbp-spec is breaking the build 🚨 HOT 2
- C# support HOT 6
- Discovery messages for non-namespaced components cause errors
- Version 10 of node.js has been released HOT 1
- Error: msgflo-send-message while executing this command HOT 4
- Can't setup the msgFlo HOT 3
- An in-range update of amqplib is breaking the build 🚨 HOT 3
- An in-range update of websocket is breaking the build 🚨 HOT 2
- Tutorial not working because Noflo output component won't print payload
- `fbp` queue messages seems to endlessly accumulate? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from msgflo.