... | ... | @@ -2,36 +2,38 @@ |
|
|
|
|
|
Validate _multiple_ *publishers* (aka. producers) and _multiple_ *consumers* working on the same [queue](https://en.wikipedia.org/wiki/Message_queue), exchange messages via some [AMQP](https://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol) [message broker](https://en.wikipedia.org/wiki/Message_broker) without any message [corruption](https://en.wikipedia.org/wiki/Data_corruption). Messages consumed should only be consumed *once*; In other words, no consumer should receive a message that has already been seen by another consumer.
|
|
|
|
|
|
## Birds eye view
|
|
|
## Birds eye view diagram [^1]
|
|
|
[^1]: This diagram was proudly produced with [mermaid](https://mermaidjs.github.io/)
|
|
|
|
|
|
```mermaid
|
|
|
graph LR;
|
|
|
|
|
|
Producer1{Producer 1};
|
|
|
Producer2{Producer 2};
|
|
|
ProducerX[...];
|
|
|
ProducerN{Producer n};
|
|
|
|
|
|
AMQP((Message Queue));
|
|
|
|
|
|
Consumer1(Consumer 1);
|
|
|
Consumer2(Consumer 2);
|
|
|
ConsumerX(...);
|
|
|
ConsumerN(Consumer n);
|
|
|
|
|
|
Producer1 -- send --- AMQP;
|
|
|
Producer2 -- send --- AMQP;
|
|
|
ProducerX -. send .- AMQP;
|
|
|
ProducerN -- send --- AMQP;
|
|
|
|
|
|
AMQP -- receive --- Consumer1;
|
|
|
AMQP -- receive --- Consumer2;
|
|
|
AMQP -. receive .- ConsumerX;
|
|
|
AMQP -- receive --- ConsumerN;
|
|
|
graph LR
|
|
|
subgraph Cloud
|
|
|
AMQP((Message Queue))
|
|
|
end
|
|
|
|
|
|
subgraph OnPrem/Cloud
|
|
|
Producer1{Producer 1} -- send --> AMQP
|
|
|
Producer1 -. ack .-> AMQP
|
|
|
Producer2{Producer 2} -- send --> AMQP
|
|
|
Producer2 -. ack .-> AMQP
|
|
|
ProducerX[...] -. send .-> AMQP
|
|
|
ProducerX -. ack .-> AMQP
|
|
|
ProducerN{Producer n} -- send --> AMQP
|
|
|
ProducerN -. ack .-> AMQP
|
|
|
end
|
|
|
|
|
|
subgraph OnPrem/Cloud
|
|
|
AMQP -- receive --> Consumer1(Consumer 1)
|
|
|
Consumer1 -. "ack" .-> AMQP
|
|
|
AMQP -- receive --> Consumer2(Consumer 2)
|
|
|
Consumer2 -. ack .-> AMQP
|
|
|
AMQP -. receive .-> ConsumerX(...)
|
|
|
ConsumerX -. ack .-> AMQP
|
|
|
AMQP -- receive --> ConsumerN(Consumer n)
|
|
|
ConsumerN -. ack .-> AMQP
|
|
|
end
|
|
|
```
|
|
|
|
|
|
Link to version with subgraphs [https://goo.gl/BQMKXf](https://goo.gl/BQMKXf)
|
|
|
|
|
|
### The following test cases shall be possible to test
|
|
|
|
|
|
* 1 producer, n subscribers (typical example: 'newsletter', etc.)
|
... | ... | |