Come si fornisce una configurazione personalizzata a una topologia tempesta? Ad esempio, se ho una topologia che ho creato che si connette a un cluster MySQL e voglio essere in grado di cambiare su quali server ho bisogno di connettermi senza ricompilare, come farei? La mia preferenza sarebbe quella di utilizzare un file di configurazione, ma la mia preoccupazione è che il file stesso non è distribuito nel cluster, quindi non verrà eseguito (a meno che la mia comprensione di come funziona un cluster è difettosa). L'unico modo che ho visto finora per passare le opzioni di configurazione in una topologia di tempesta in fase di esecuzione è tramite un parametro della riga di comando, ma questo è disordinato quando si ottiene un buon numero di parametri.Configurazione topologia Storm
Un pensiero è stato quello di sfruttare uno script di shell per leggere il file in una variabile e passare il contenuto di tale variabile come stringa alla topologia, ma mi piacerebbe qualcosa di un po 'più pulito, se possibile.
Qualcun altro ha riscontrato questo? Se sì, come lo hai risolto?
EDIT:
Sembra necessario fornire maggiori chiarimenti. Il mio scenario è che ho una topologia che voglio essere in grado di implementare in ambienti diversi senza dover ricompilarlo. Normalmente, creerei un file di configurazione che contiene cose come i parametri di connessione del database e sono passati. Mi piacerebbe sapere come fare qualcosa del genere in Storm.
Immagino che una domanda giusta sia chiedere perché non ricompilare semplicemente? Il tempo per costruire il barattolo non dovrebbe essere molto grande. –
Non ho un compilatore sui sistemi in cui verrà distribuito. Le connessioni a qualsiasi database, per esempio, saranno diverse, quindi devo essere in grado di cambiare quella parte della configurazione senza dover ricompilare. Non sono nemmeno io quello che farà lo spiegamento, quindi deve essere semplice. La mia soluzione attuale è sfruttare un oggetto Proprietà e leggere la configurazione da un file. Quindi, popolo l'oggetto Config tempesta da questo, rendendo così tutte le opzioni disponibili per tutti i bulloni. Ho appena anteposto il "nome" del bullone alle opzioni per la segregazione semplice. – blockcipher
A meno che non ti abbia frainteso, lo facciamo usando Flux. http://storm.apache.org/releases/2.0.0-SNAPSHOT/flux.html Puoi mettere la configurazione specifica per l'ambiente in file separati e aggiungerli alla sezione include? – ndtreviv