Accesso alla cache globale utilizzando un nodo JavaCompute

È possibile utilizzare un nodo JavaCompute per interagire con una mappa in una cache globale o una griglia WebSphere® eXtreme Scale esterna.

Prima di iniziare

È inoltre possibile accedere alla cache globale utilizzando un nodo Mappatura ; vedere Accesso alla cache globale utilizzando un nodo Mapping.

  • Leggi le informazioni di concetto in Panoramica della caching dei dati.
  • Assicurarsi che la cache globale o griglia esterna sia disponibile. La cache è disabilitata per impostazione predefinita. Per utilizzare la cache, selezionare una policy di cache di livello del nodo di integrazione (vedere Configurazione della cache globale incorporata).
  • Se si sta collegando una griglia esterna, creare un servizio configurabile per definire come viene effettuata la connessione. Per ulteriori informazioni, consultare comando mqsicreateconfigurableservice.
  • Per utilizzare le proprie classi Java™ con la cache globale, inserire i file JAR che contengono le classi Java in una delle directory delle classi condivise. Queste classi Java devono essere disponibili a tutti i nodi di integrazione e i server di integrazione che partecipano alla cache globale. Per ulteriori informazioni sulle directory delle classi condivise, consultare Classloader condiviso Java.

Informazioni su questa attività

È possibile utilizzare un nodo JavaCompute per memorizzare i dati in una mappa globale. È quindi possibile creare un altro nodo JavaCompute in grado di ottenere dati dalla cache globale per l'elaborazione o l'instradamento. Il nodo JavaCompute utilizza l'oggetto MbGlobalMap per accedere alla cache globale o griglia esterna. Questa classe può essere utilizzata per ottenere una mappa, e per inserire o ottenere dati in una mappa. Non è possibile creare una mappa esplicitamente, ma se si ottiene una mappa che non esiste, la mappa viene creata automaticamente. Quando si ottiene una mappa globale da una griglia esterna, il metodo getGlobalMap effettua una connessione alla griglia se uno non esiste.

Le interazioni con la cache si verificano al di fuori della transazione del flusso di messaggi e sono impegnate immediatamente. Se un'eccezione viene lanciata a valle del nodo che interagisce con la cache, le interazioni della cache non vengono arrotolate.

I seguenti passaggi descrivono come un flusso di messaggi aggiunge i dati ad una mappa e un altro flusso ottiene i dati da quella mappa.

Procedura

  1. Creare un flusso di messaggi che contenga un nodo JavaCompute .
    È possibile posizionare il nodo JavaCompute prima o dopo un nodo MQOutput . Nel seguente esempio, il nodo JavaCompute viene posizionato dopo un nodo MQOutput in modo che il nodo JavaCompute possa utilizzare il messaggio ID del messaggio di output.
    La grafica mostra un nodo MQInput collegato ad un nodo MQOutput, collegato ad un nodo JavaCompute.
  2. Fare doppio clic sul nodo JavaCompute .
    Si apre la procedura guidata Nuova classe di nodo di Compute Java .
  3. Sul riquadro Classe nodo Compute Java , fornire le informazioni appropriate, quindi fare clic su Successivo.
    È possibile accettare i valori predefiniti facendo clic su Successivo.
  4. Nel riquadro Modello Classe di Classe Compute Java , selezionare il modello appropriato per il tuo scenario, quindi fare clic su Finitura.

    Il file Java modello si apre nell'editor, indicando dove è possibile aggiungere il proprio codice.

  5. Per ottenere una mappa dalla cache incorporata oppure creare la mappa se non esiste, aggiungere l'oggetto MbGlobalMap, come mostrato nel seguente esempio.
    L'Oggetto MbGlobalMap è descritto anche nella documentazione di Java Plugin API.
    MbGlobalMap globalMap = MbGlobalMap.getGlobalMap("MyMap");
    Questo esempio richiama la mappa chiamata "MyMap". Se la mappa non esiste, viene creata. In alternativa, quando si utilizza la cache incorporata, è possibile utilizzare la mappa predefinita non specificando un nome di mappa, come mostrato nel seguente esempio. Quando ci si connette ad una griglia esterna, non esiste alcuna mappa predefinita. È necessario specificare un nome mappa valido sulla griglia esterna.
    MbGlobalMap globalMap = MbGlobalMap.getGlobalMap();
    La cache utilizza WebSphere eXtreme Scale mappe dinamiche. Qualsiasi nome di mappa è consentito, a parte i nomi che iniziano con SYSTEM.BROKER, riservato all'utilizzo da parte del nodo di integrazione. La mappa predefinita è denominata SYSTEM.BROKER.DEFAULTMAP; è possibile utilizzare o cancellare questa mappa.
    Per ottenere una mappa da una griglia esterna, aggiungere l'oggetto MbGlobalMap, specificando il nome della mappa sulla griglia esterna e il nome del servizio configurabile utilizzato per collegarsi alla griglia:
    MbGlobalMap xc10Map = MbGlobalMap.getGlobalMap("MyMap.LUT","xc10Connection");
    In questo esempio, la mappa, "MyMap.LUT", si trova su una griglia esterna su un'appliance XC10 . Il servizio configurabile che viene utilizzato per connettersi alla griglia si chiama "xc10Connection".
  6. Opzionale: Specificare quanto tempo, in secondi, i dati rimangono nella cache globale prima che venga rimosso automaticamente.

    Questa volta è noto come tempo di vivere e viene contato da quando quella voce mappa viene aggiornata. Si specifica questa volta quando si ottiene un oggetto MbGlobalMap. Il valore si applica a tutte le voci cache create utilizzando quell' oggetto MbGlobalMap. Per istruzioni dettagliate, consultare Specifica di quanto i dati lunghi rimangono nella cache globale utilizzando il nodo JavaCompute.

  7. Per inserire i dati nella mappa è necessario creare una coppia chiave e di valore nella mappa, come mostrato nel seguente esempio.
    Per chiavi e valori sono supportati i tipi e le stringhe primitive Java. Gli oggetti Java sono supportati come valori. Solo per la griglia incorporata, le chiavi possono essere anche schiere di primitivi o stringhe. (Per utilizzare le proprie classi Java con la cache globale, inserire i file JAR che contengono le classi Java in una delle directory delle classi condivise.)
    globalMap.put(key, val);
  8. Salvare il flusso di messaggi.
  9. Per accedere ai dati memorizzati da un altro flusso di messaggi, creare un flusso che contiene un nodo JavaCompute .
    Ad esempio, il seguente flusso di messaggi contiene un nodo JavaCompute che richiama le informazioni appropriate dalla mappa, invia quindi un messaggio di risposta attraverso un nodo MQReply .
    La grafica mostra un nodo MQInput collegato ad un nodo JavaCompute, collegato ad un nodo MQReply.
  10. Ripetere i passi 2, 3 e 4 per creare un file Java per il tuo nuovo nodo JavaCompute .
  11. Utilizzare l'oggetto MbGlobalMap per ottenere la mappa creata al passo 5, quindi ottenere i dati aggiunti alla mappa al passo 6. Se si sa che i dati che si stanno richiamando sono una stringa, ad esempio, specificare stringa quando si ottengono i dati, come mostrato nel seguente esempio.
    MbGlobalMap globalMap = MbGlobalMap.getGlobalMap("MyMap");
    ...
    String val = (String)globalMap.get(key);
    Il seguente esempio mostra come ottenere i dati che si aggiungono a una mappa su una griglia esterna:
    MbGlobalMap xc10Map = MbGlobalMap.getGlobalMap("MyMap.LUT","xc10Connection");
    ...
    String val = (String)xc10Map.get(key);

    Per evitare che la cache diventi troppo grande, quando si è finito con una coppia di chiavi e valore, utilizzare il metodo Rimuovi () per eliminare quei dati dalla mappa.

    È possibile utilizzare il content assist per elencare le opzioni disponibili quando si sta costruendo il codice Java. Per accedere all'assist dei contenuti, posizionare il cursore nel punto di inserimento, quindi fare clic su Modifica > Content Assist o premere Ctrl + Spazio. Ad esempio, se si digita "myMap", quindi premere Ctrl + Spazio, è possibile scegliere tra un elenco di opzioni, incluse le seguenti azioni.
    • rimuovere, che rimuove un singolo oggetto da una cache globale
    • containsKey, che indica se una chiave esiste in una mappa
    • aggiornamento, che aggiorna un oggetto esistente
    Tutte le opzioni disponibili sono documentate nel Javadoc per l'API di Java Plugin (vedi IBM API di integrazione).
  12. Salva il tuo flusso di messaggi.
  13. Distribuire i flussi di messaggi.