I have the following code:
@startuml
[Producer 1]
[Producer 2]
[Producer ...]
[Producer n]
cloud {
[Internet] as Internet1
}
node RabbitMQ #LightSteelBlue {
[Exchange]
[Queue 1]
[Queue 2]
[Queue ...]
[Queue n]
}
cloud {
[Internet] as Internet2
}
[Consumer 1]
[Consumer 2]
[Consumer ...]
[Consumer n]
[Producer 1] -[hidden]-> [Producer 2]
[Producer 2] -[hidden]-> [Producer ...]
[Producer ...] -[hidden]-> [Producer n]
[Producer 1] -> [Internet1] : Publish
' [Producer 2] -> [Internet1] : Publish
' [Producer ...] -> [Internet1] : Publish
' [Producer n] -> [Internet1] : Publish
[Internet1] -> [Exchange] : Publish
[Exchange] -> [Queue 1] : Route
' [Exchange] -> [Queue 2] : Route
' [Exchange] -> [Queue ...] : Route
' [Exchange] -> [Queue n] : Route
[Queue 1] -[hidden]-> [Queue 2]
[Queue 2] -[hidden]-> [Queue ...]
[Queue ...] -[hidden]-> [Queue n]
[Queue 1] -> [Internet2] : Consume
' [Queue 2] -> [Internet2] : Consume
' [Queue ...] -> [Internet2] : Consume
' [Queue n] -> [Internet2] : Consume
[Consumer 1] -[hidden]-> [Consumer 2]
[Consumer 2] -[hidden]-> [Consumer ...]
[Consumer ...] -[hidden]-> [Consumer n]
[Internet2] -> [Consumer 1] : Consume
' [Internet2] -> [Consumer 2] : Consume
' [Internet2] -> [Consumer ...] : Consume
' [Internet2] -> [Consumer n] : Consume
@enduml
This does mostly what I want. With a few exceptions:
- I like all producers to connect to internet1
- I like Exchange to connect to all queues
- I like all queues to connect to internet2
- I like internet2 to connect to all consumers
I tried this with the stuff that is now in comment. But that did not work.
How could I implement this?
Also: what is the reason that there is such a big distance between the queues?