Existem diversos estágios na vida útil de um analisador de fluxo de mensagens definido pelo usuário.
Este tópico descreve as interações que ocorrem entre os componentes do WebSphere Message Broker quando você executa uma analisador definido pelo usuário. Explica cada estágio em termos dos eventos que iniciam cada estágio e os eventos que ocorrem durante e após cada estágio, e as APIs que são chamadas. Entender os conceitos deste tópico ajuda a projetar e desenvolver seu analisador de forma mais efetiva.
A primeira fase no ciclo de vida do analisador definido pelo usuário é a fase de registro. A finalidade da fase de registro é registrar o analisador definido pelo usuário com o intermediário. Essa fase se inicia quando um grupo de exceções é iniciado.
O analisador é criado durante a fase de instanciação do ciclo de vida do analisador. Quando uma mensagem de entrada é recebida ou uma mensagem de saída é construída em um nó Compute, o analisador relevante é identificado e os requisitos do analisador são obtidos do cabeçalho de mensagem, como o MQMD. O intermediário inicia e carrega o LIL (Loadable Implementation Library) e o gerado de analisador. Antes de a função cpiCreateContext ser chamada, o intermediário ria um elemento de nome como o elemento raiz efetivo para o analisador. Entretanto, esse elemento não é nomeado. O analisador deve nomear esse elemento na função cpiSetElementName.O processo do grupo de execução cria uma instância do analisador e o intermediário faz uma chamada a cpiCreateContext para permitir que o objeto do analisador adquira a seção apropriada da mensagem.
O intermediário faz em seguida uma chamada a cpiParseBuffer. cpiParseBuffer executa qualquer inicialização necessária e retorna o comprimento do conteúdo da mensagem do qual o analisador está assumindo propriedade. O analisador avalia quanto dos dados da mensagem deve analisar e pede o número apropriado de bytes.
Sempre que uma instância de um objeto do analisador definido pelo usuário é criada, a função de implementação de criação de contexto cpiCreateContext também é chamada pelo intermediário. Essa chamada permite ao analisador alocar dados da instância associados ao analisador. Uma função cpiDeleteContext para excluir o contexto do objeto do analisador também é necessária.
Durante a fase de processamento, o analisador manipula, altera e faz referência a elementos no objeto de mensagem. A fase de processamento do fluxo de mensagens começa quando ocorre alguma atividade de processamento de mensagem, como a navegação, que exija acesso a um elemento em uma mensagem que não exista na representação do modelo interna do intermediário da mensagem envolvida.
Durante a fase de processamento do fluxo de mensagens, o analisador é chamado em resposta a tentativas de navegar para a árvore de mensagens. O analisador examina o buffer alocado quando cpiParseBuffer foi chamado e cria quaisquer elementos de mensagem necessários.
Essas funções são chamadas quando qualquer forma de navegação é feita (como uma expressão de filtro que especifique um campo da mensagem) para a parte da árvore de elementos de sintaxe que representa logicamente os dados para um formato de mensagem suportado por um analisador definido pelo usuário. Essa navegação ocorre quando uma operação no intermediário exige que uma árvore de elementos de sintaxe seja construída ou estendida.
Quando o analisador tiver terminado de analisar as partes relevantes da árvore de elementos de sintaxe, ele chamará cpiWriteBuffer. Essa função anexa sua parte da árvore de elementos da sintaxe ao fluxo de bits no buffer de mensagem que está associado ao objeto analisador e cria a mensagem de saída.
A fase de Destruição é a fase final no ciclo de vida do analisador definido pelo usuário. Quando o analisador tiver gravado sua parte da árvore de elemento da sintaxe para o fluxo de bits e criado a mensagem de saída, os recursos do sistema que foram criados pelo intermediário para o analisador utilizar precisarão ser liberados.
A fase de destruição começa quando o comando mqsistop é utilizado para parar o processo de execução.