É possível usar um nó
JavaCompute para armazenar dados
em um mapa global. É possível então criar outro nó
JavaCompute que pode obter
dados do cache global para processamento ou roteamento. O nó
JavaCompute usa o objeto MbGlobalMap
para acessar o cache global
ou a grade
externa. Essa classe pode ser usada para obter um mapa e para colocar dados em um mapa ou obter dados dele. Não é possível criar um mapa explicitamente, se você obtiver um mapa que
não existe, o mapa será criado automaticamente.
Quando você obtém um mapa global de uma
grade externa, o método getGlobalMap estabelece uma conexão com a grade se
não existir uma. Interações com o cache ocorrem fora da transação do fluxo de mensagens e são confirmadas imediatamente.
Se uma exceção for lançada no recebimento de dados do nó que interage com o cache, as interações do cache não serão recuperadas.
As etapas
a seguir descrevem como um fluxo de mensagens inclui dados em um mapa e
outro fluxo obtém os dados desse mapa.
- Crie um fluxo de mensagens que contenha um nó JavaCompute.
É possível colocar
o nó JavaCompute
antes ou depois de um nó MQOutput.
No exemplo a seguir, o nó JavaCompute é colocado
depois de um nó MQOutput
para que o nó JavaCompute possa
usar o ID de mensagem da mensagem de saída.
- Clique duas vezes no nó JavaCompute. O assistente Nova Classe de Nó de Cálculo Java
é aberto.
- Na área de janela Classe de Nó de Cálculo Java,
forneça as informações apropriadas e, em seguida, clique em Avançar. Você pode aceitar os valores padrão clicando em Avançar.
- Na área de janela Modelo de Classe de Nó de Cálculo Java,
selecione o modelo apropriado para seu cenário e, em seguida, clique em Concluir.
O arquivo Java™ do modelo
é aberto no editor, indicando onde você pode incluir seu próprio código.
- Para obter um mapa do cache integrado ou criar o mapa se ele
não existir, inclua o objeto MbGlobalMap, conforme mostrado no
exemplo a seguir. O objeto MbGlobalMap também é descrito na documentação da API do Plug-in Java.
MbGlobalMap globalMap = MbGlobalMap.getGlobalMap("MyMap");
Este
exemplo obtém o mapa chamado "MyMap". Se o mapa não existir, ele será
criado. Como alternativa, quando estiver usando o cache integrado,
você poderá usar o mapa padrão não especificando um nome do mapa, conforme mostrado
no exemplo a seguir. Quando
você está conectando a uma grade externa, não existe nenhum mapa padrão. Você
deve especificar um nome de mapa válido na grade externa.
MbGlobalMap globalMap = MbGlobalMap.getGlobalMap();
O
cache usa mapas dinâmicos do WebSphere eXtreme Scale.
Qualquer nome de mapa é permitido, exceto nomes que comecem com SYSTEM.BROKER,
que são reservados para uso pelo broker. O mapa padrão é chamado
SYSTEM.BROKER.DEFAULTMAP; é possível usar ou limpar este mapa.
Para obter um mapa de uma grade externa,
inclua o objeto MbGlobalMap, especificando o nome do mapa na grade externa
e o nome do serviço configurável que é usado para conectar
à grade:
MbGlobalMap xc10Map = MbGlobalMap.getGlobalMap("MyMap.LUT","xc10Connection");
Neste
exemplo, o mapa, "MyMap.LUT", está em uma grade externa em um dispositivo
XC10. O serviço configurável que é usado para conectar à grade
é chamado "xc10Connection".
- Opcional: Especifique quanto tempo,
em segundos, os dados permanecem no cache global antes de serem removidos
automaticamente.
Esse tempo é conhecido como o tempo de
vida e é contado a partir de quando essa entrada de mapa foi atualizada pela última vez.
Você especifica esse tempo quando obtém um objeto MbGlobalMap. O valor
se aplica a todas as entradas de cache que são criadas usando esse objeto
MbGlobalMap. Para obter instruções detalhadas,
consulte Removendo Dados do Cache Global.
- Para colocar dados no mapa, é preciso criar um par de chave e valor
no mapa, como é mostrado no exemplo a seguir. Para chaves e valores, tipos primitivos e sequências Java
são suportados. Apenas para a grade integrada, as chaves
também podem ser matrizes de primitivas ou sequências.
globalMap.put(key, val);
- Salve o fluxo de mensagens.
- Para acessar os dados armazenados de outro fluxo de mensagens, crie um
fluxo que contenha um nó JavaCompute.
Por exemplo, o fluxo de mensagens a seguir contém um nó JavaCompute que recupera
as informações apropriadas do mapa e, em seguida, envia uma mensagem de resposta
através de um nó MQReply.
- Repita as etapas 2, 3 e 4 para criar um arquivo Java para seu novo nó JavaCompute.
- Use o objeto MbGlobalMap para obter o mapa que você criou na
etapa 5 e, em seguida, obter os dados que você incluiu no mapa na etapa 6.
Se você souber que os dados que está recuperando são uma sequência, por
exemplo, especifique sequência quando obtiver os dados, conforme é mostrado no
exemplo a seguir.
MbGlobalMap globalMap = MbGlobalMap.getGlobalMap("MyMap");
...
String val = (String)globalMap.get(key);
O exemplo a seguir mostra como obter os dados
incluídos em um mapa em uma grade externa:
MbGlobalMap xc10Map = MbGlobalMap.getGlobalMap("MyMap.LUT","xc10Connection");
...
String val = (String)xc10Map.get(key);
Para evitar que o cache se torne muito grande, quando concluir com um par de chave
e valor, use o método remove() para excluir esses dados do mapa.
É possível usar o assistente de conteúdo para listar as opções disponíveis
ao construir código Java. Para acessar o assistente de conteúdo, coloque o cursor no ponto de inserção e, em seguida,
clique em ou pressione Ctrl+Espaço. Por exemplo,
se você digitar "myMap", e então pressionar Ctrl+Espaço, poderá escolher em uma
lista de opções, incluindo as ações a seguir.
- remove, que remove um único objeto de um
cache global
- containsKey, que indica se existe uma chave
em um mapa
- update, que atualiza um objeto existente
Todas as opções disponíveis são documentadas no Javadoc para a API do Plug-in Java
(consulte
API Java do Message Broker). Também é possível acessar
o Javadoc para a API do Plugin Java por meio do menu
Iniciar em
.
- Salve seu fluxo de mensagens.
- Implemente seus fluxos de mensagens.