As informações neste tópico se aplicam a nós de saída e a nós de processamento de mensagem. Ambos os tipos de nó podem ser considerados juntos, porque, embora um nó de processamento de mensagem seja normalmente utilizado para processar uma mensagem, e um nó output seja utilizado para fornecer uma saída, no formato de um fluxo de bits, de uma mensagem, você pode utilizar qualquer tipo de nó para executar uma dessas funções.
A fase de registro ocorre quando um nó de processamento de mensagem definido pelo usuário escrito em Java, se torna conhecido para o intermediário ou se registra com este.
Sempre que um intermediário inicia, ele carrega todas as LILs e classes Java relevantes. Para assegurar que um nó de processamento de mensagem seja registrado com o intermediário, você deve fornecer ao intermediário uma classe que implemente a interface MbNodeInterface e esteja contida no caminho de classe do intermediário.
Um nó de processamento de mensagens Java definido pelo usuário é instanciado quando um intermediário implementa um fluxo de mensagens contendo o nó de processamento de mensagens definido pelo usuário. Quando o nó é instanciado, o construtor da classe de nó de processamento de mensagem é chamado.
Quando um nó é instanciado, quaisquer terminais que foram especificados são criados. Um nó de processamento de mensagem pode ter qualquer número de terminais de entrada e de saída associados a ele. Você deve incluir os métodos createInputTerminal e createOutputTerminal no construtor do nó para declarar esses terminais.
Os terminais de saída incluem terminais out, failure e catch. Utilize a classe createOutputTerminal dentro do construtor da classe do nó para criar o número de terminais de saída necessário.
Como um mínimo, somente é preciso criar esses terminais de saída utilizando a classe do construtor. Contudo, se precisar inicializar valores de atributos, você deve incluir também esse código neste ponto no nó de processamento de mensagem.
Se desejar tratar exceções que sejam transmitidas de volta a seu nó de processamento de mensagens, é recomendável fazer isso criando um terminal de falha para o nó de processamento de mensagens definido pelo usuário, utilizando o método createOutputTerminal. É sensato utilizar o terminal de falha para esse processo porque é para ele que o WebSphere Message Broker propaga os erros.
Certifique-se de que quaisquer exceções capturadas pelo nó de processamento de mensagem sejam tratadas corretamente. Se você não incluir um terminal de falha, o nó de processamento de mensagem não tentará tratar a exceção. Se o fluxo de mensagens não contiver nenhum método de manipulação de exceção, quaisquer exceções lançadas serão transmitidas de volta ao nó input, onde elas serão tratadas.
Se você capturar exceções, certifique-se de relançar quaisquer exceções que o nó de processamento de mensagens não pode tratar. Isso fará com que a exceção seja transmitida novamente para o nó input para manipulação, por exemplo, quando você quiser reverter uma transação.
Durante a fase de processamento do ciclo de vida de um nó de processamento de mensagens definido pelo usuário, o nó de processamento de mensagens toma a hierarquia lógica da mensagem e a processa de alguma forma.
Um nó de processamento de mensagem Java definido pelo usuário é destruído quando o nó é excluído ou o intermediário é encerrado. Você não precisa incluir algo em seu código que especifique que o nó deve ser excluído fisicamente, porque isso pode ser tratado pelo coletor de lixo.
Contudo, se quiser ser notificado de que um nó está prestes a ser excluído, você pode utilizar o método onDelete. Você pode querer fazer isso, se existirem recursos além dos que serão coletados como lixo que você deseja excluir. Por exemplo, se você tiver aberto um soquete, este não será fechado corretamente quando o nó for excluído automaticamente. Você pode incluir essa instrução no método onDelete, para assegurar que o soquete seja fechado corretamente.