Details
-
Task
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
Create a demonstration of a distributed work queue consisting of multiple brokers with the following requirements:
- Producers send to a single address, consumers subscribe to a single address.
- Each message is delivered to exactly one of the consumers (not fault tolerant/transactional)
- Consumers may connect and disconnect during the exercise without message loss.
- Messages are roughly balanced over consumers.
- All messages are delivered even if all but one consumer disconnects.
- In particular, messages do not get "stuck" on one broker because the consumer is only receiving from another brokers.
Goals:
1. Discover what changes to dispatch are needed to achieve this demonstration, enhance dispatch in a flexible way to support this and other possible "orchestration" tasks.
2. Once basic functionality is in place, explore further issues such as
- Performance: what overhead does dispatch add in throughput and latency vs. direct broker access?
- Scalability: can we scale total throughput linearly by adding brokers (and perhaps dispatch routers)?
Are there limits/bottlenecks in dispatch that need to be addressed in order to scale? - HA: If we use fault tolerant broker clusters can we get reliable at-least-once delivery? What changes to dispatch are needed to handle fail-over?
3. Build a similar demo of a distributed topic (TODO specify in more detail), to see if the extensions to dispatch are sufficient to support a different type of orchestration.
4. Push improvements into dispatch as they become mature/usable in a general context.