Sto cercando di determinare le opzioni per il clustering dell'applicazione ServiceMix 3.3.1/Camel 2.1/AMQ 5.3. Sto eseguendo l'elaborazione dei messaggi ad alto volume e ho bisogno di cluster per alta disponibilità e scalabilità orizzontale.Apache Camel con cluster ActiveMQ
Qui è fondamentalmente ciò che fa la mia domanda ... HTTP> QUEUE-> processo-> Database-> TOPIC
da ("pontile: http://0.0.0.0/inbound ") .to (" activemq: inboundQueue");
da ("activemq:? InboundQueue maxConcurrentConsumers = 50") .process (decode()) .process (transform()) .process (validate()) .process (SaveToDatabase()) . a ("ActiveMQ: argomento: ouboundTopic");
Quindi, ho letto tutte le pagine di clustering ServiceMix e AcitveMQ, ma non sono ancora sicuro su quale direzione andare.
So che posso utilizzare un'impostazione Master/Slave per HA, ma questo non aiuta con la scalabilità.
Ho letto sulla rete di broker, ma non sono sicuro di come si applica. Ad esempio, se distribuisco percorsi Camel identici su più nodi in un cluster, in che modo "interagiranno" esattamente? Se punto il mio produttore HTTP su un nodo (NodeA), quali messaggi verranno inviati a NodeB? Le code/argomenti saranno condivise tra il nodo A/B ... se sì, come sono i messaggi suddivisi o duplicati? Inoltre, in che modo un client esterno si iscriverebbe al mio "outboundTopic" esattamente (e otterrà tutti i messaggi, ecc.)?
In alternativa, stavo pensando che dovrei solo condividere un broker tra più istanze di ServiceMix. Sarebbe più pulito in quanto ci sarebbe solo una serie di code/argomenti da gestire e potrei scalare aggiungendo più istanze. Ma ora sono limitato alla scalabilità di un singolo broker e torno a un singolo punto di errore ...
Se qualcuno può chiarire i compromessi per me ... Lo apprezzerei .
Bruce, grazie. Sto usando la proprietà "maxConcurrentConsumers" per multi-threadare i consumatori dalla coda in entrata. Ora sto cercando di fare il passo successivo e distribuire il carico su più macchine. Quindi, sembra che potrei semplicemente installare più istanze identiche di SMX configurate in una rete di broker e che distribuirebbero il carico per le mie esigenze. I gruppi di messaggi forniscono ancora l'affinità di thread con una rete di broker? Inoltre, ho bisogno di rendere disponibili i messaggi di coda in uscita a un portale ... il portale dovrebbe connettersi a ciascun broker per ottenere tutti i messaggi? –
Non credo che i gruppi di messaggi offriranno esclusività in una rete di intermediari. L'ordine totale funziona solo per un singolo broker alla volta, quindi penso che i gruppi di messaggi siano allo stesso modo. Fintanto che tutti i messaggi vengono inviati all'argomento in uscita, tutti i messaggi devono essere consumati, indipendentemente dal broker in cui è registrata la sottoscrizione. Poiché si tratta di un argomento, è possibile utilizzare anche un abbonamento durevole. Anche se non sono sicuro che un singolo utente con una sottoscrizione duratura sia una buona idea poiché si utilizzano più utenti concorrenti per estrarre i messaggi dalla coda in entrata. – bsnyder
@bsnyder - bel riassunto; dove suggeriresti di ottenere la documentazione di ServiceMix più aggiornata? La documentazione ufficiale sul sito Web è abbastanza obsoleta. – wulfgarpro