Subscribers and publishers can connect to any node in the network. A message
published at any node will be routed to all subscribers regardless of which node
they are subscribed to.
- subscribe nodes: subscribers send a specially formatted message with a wildcard
- subscription-status nodes: inform other nodes of local subscriptions.
- deal with loops and multiple routes in the network.
- publish nodes: route only to interested neighbours.
It would be nice to make the routing dynamic, so e.g. we can kill one container
and messages will be automatically redirected via another path.
Note this queue does not guarantee ordered delivery of messages like a normal
queue. It will do "mostly ordered" delievery, the degree of disorder will depend
on the amount of re-routing that has to be done.
- don't lose any work items.
- don't process the same item twice
- try to balance work across all containers.
- publish: publishers send messages here.
- distributed status: so containers know where to route work items.
- subscription: consumers send special message to subscribe.