17

Ho bisogno di eseguire un componente utilizzando Apache Camel (o Spring Integration) sotto il cluster WAS ND 8.0. Entrambi eseguono alcuni thread all'avvio e li interrompono normalmente durante l'arresto. Nessun problema per fornire threadpool gestito da WAS. Ma i thread devono essere eseguiti contemporaneamente sul nodo single del cluster. Inoltre deve essere disponibile alta cioè passare ad un altro nodo quando il nodo attivo cade.Singleton a livello di cluster in Websphere Cluster

Soluzione che ho trovato - è WAS Partitioning Facility. Richiede licenze di implementazione estesa aggiuntive. È l'unico modo, o c'è un modo per implementarlo usando solo la licenza Network Deployment?

Grazie in anticipo.

+2

Ottima domanda. L'esecuzione di Camel in un'installazione di distribuzione di rete WAS con carico bilanciato presenta alcuni aspetti, in termini di gestore di transazioni, caricamento di classi e thread gestiti, ma è piuttosto semplice. Avere una singola istanza di cammello che non riesce è in una configurazione di distribuzione di rete è difficile. È possibile utilizzare le politiche di percorso cammello per avere più contesti attivi, ma mantenere determinate rotte avviate solo su un singolo server. –

+1

Quale versione di WAS? –

+1

Davvero, ho dimenticato di menzionare: WAS 8.0 – karadeniz

risposta

1

Penso che non ci sia una funzionalità che risolva questo interessante requisito. Posso immaginare un "trucco":

  1. un timer EJB inviare un messaggio su una coda (diciamo 1 al minuto)
  2. Configurare un Service Integration Bus (SIB), con alta disponibilità e No scalabilità, in modo il manager HA assicura che solo un motore di messaggistica (ME) è attivo.
  3. Creare una coda non affidabile per prestazioni elevate e basso consumo di risorse.
  4. La specifica di attivazione deve essere configurata per ascoltare solo ME locale.
  5. Un MDB implementa la seguente logica: quando arriva il messaggio, controlla se il thread singleton è vivo, altrimenti avvia il thread.

Ha senso?