Mi chiedevo quale sarebbe stata una buona soluzione per garantire che i nomi delle code venissero inseriti correttamente e utilizzati solo dalle applicazioni corrette in un sistema di grandi dimensioni che utilizza code di messaggi per scambiare messaggi.
Abbiamo un grande sistema scritto in Java e Apache Camel. È suddiviso in diversi microservizi in cui utilizzano code di messaggi per comunicare tra loro. I nomi delle code sono ora stringhe, che tendono ad essere piuttosto semplici, come "incupdate" o "inccreate". Quando il sistema continua a crescere e continuiamo ad aggiungere altri servizi, temo che qualcuno riutilizzi un nome di coda che esiste già, il che creerebbe bug che non verrebbero visualizzati nei test locali e sarebbe difficile eseguire il debug. Una soluzione semplice a questo è semplicemente aggiungere il nome del servizio come prefisso al nome della coda, questo garantirebbe l'univocità tra i servizi.
Ma stavo pensando, "Perché non prenderlo un po 'oltre"? Cosa succede se ho creato un riferimento, a cui tutti i servizi hanno accesso, ad esempio un enum, in cui ogni servizio utilizza solo voci nel riferimento come nomi di coda? In questo modo non solo garantire l'unicità, ma garantirebbe anche la correttezza (ad esempio errori di battitura nei nomi delle code). E fornirebbe anche l'evidenziazione del codice per ogni luogo in cui viene utilizzato il nome della coda.
Hai qualche soluzione o suggerimento per un problema come questo? La soluzione "di riferimento" è valida a tutti? Posso vedere un problema con esso, ed è che ogni servizio deve effettivamente avere accesso all'enumerazione, il che significa iniettarlo da qualche parte. Penso che potremmo usare Maven o Spring per questo, ma non ne sono sicuro.