Sto cercando di usare RabbitMQ per la comunicazione bidirezionale one-to-one tra client e server. Pertanto, Client 1 dovrebbe essere in grado di comunicare solo con Server 1 e viceversa:
I server rimangono sempre connessi a RabbitMQ, mentre i client vengono avviati e arrestati su richiesta. Questo perché un server dovrebbe ricevere tutti i messaggi dal suo client, ma se un server invia un messaggio al suo client quando il client non è presente, va bene se il messaggio è andato perso.
Inoltre, ci deve essere una coppia client-server per ogni utente del sistema.
La mia prima idea è stata quella di creare un nuovo utente RabbitMQ e vhost per ogni coppia client-server e due code in ogni vhost (una consumata dal server e una consumata dal client).
Tuttavia, è scalabile? Ad esempio, se ci sono utenti 10k del sistema, ci saranno 10k utenti RabbitMQ, 10k vhosts e 10k code permanenti, connessioni, canali e utenti (dai server).
Possono questi grandi numeri di code e connessioni rappresentare un problema di prestazioni per RabbitMQ?
E quale sarebbe il modo migliore per implementare questo comportamento con RabbitMQ? O è una tecnologia diversa da AMQP e RabbitMQ più adatti per questo caso d'uso?