Tratamento de Erro de MQeInput

O nó MQeInput toma medidas exclusivas quando trata de erros com mensagens persistentes e transacionais. (Erros encontrados com mensagens não-transacionais são manipulados, conforme descrito em Gerenciando Erros no Nó Input).

Essa ação é resumida na tabela abaixo:

Evento de Erro Terminal Failure Conectado Terminal Failure Não Conectado Terminal Catch Conectado Terminal Catch Não Conectado
O Nó Detecta Erro Interno O Fluxo de Falhas Manipula o Erro Novas Tentativas para Nós Não se aplica Não se aplica
Nó propaga a mensagem para terminal de saída, ocorre exceção no fluxo de saída. Não se aplica Não se aplica O nó tenta novamente e então é propagado para o terminal catch Novas Tentativas para Nós
Nó propaga a mensagem para o terminal catch, ocorre exceção no fluxo catch O Fluxo de Falhas Manipula o Erro Novas Tentativas para Nós Não se aplica Não se aplica
Nó propaga mensagem para terminal failure, ocorre exceção no fluxo de falha Não se aplica Não se aplica Nó coloca a mensagem na fila alternativa Nó coloca a mensagem na fila alternativa

Processamento de Nova Tentativa

O nó tenta o processamento de nova tentativa quando uma mensagem é revertida para a fila de entrada. Ele verifica se a mensagem foi recuperada anteriormente e se tiver sido, se a contagem de backout alcançou o (se igualou ao) limite de backout. A contagem de recuperação para cada mensagem é mantida pelo WebSphere MQ no MQMD.

Você especifica o (ou permite o padrão 0 no) atributo de limite de recuperação BOTHRESH ao criar a fila. Se você aceitar o valor padrão 0, o nó aumentará esse valor para 1. O nó também definirá o valor para 1 se não puder detectar o valor atual. Isso significa que se uma mensagem não foi recuperada anteriormente, ela será recuperada e repetida pelo menos uma vez.

  1. Se o limite de recuperação não tiver sido alcançado, o nó receberá a mensagem da fila novamente. Se falhar, isso será tratado como um erro interno (descrito acima). Se for bem-sucedido, o nó propagará a mensagem para o fluxo de saída.
  2. Se o limite de recuperação for alcançado:
    • Se for apropriado, o nó propagará a mensagem para o terminal catch ou failure, de acordo com a situação na qual ocorre o erro (descrito acima).
    • Se não for apropriado, o nó colocará a mensagem em uma fila disponível, na ordem de preferência:
      1. A mensagem é colocada no nome de reenfileiramento de recuperação da fila de entrada (atributo da fila BOQNAME), se houver algum definido.
      2. Se a fila de recuperação não estiver definida, ou não puder ser identificada pelo nó, a mensagem será colocada na DLQ (Fila Dead Letter), se houver uma definida. (Se o gerenciador de filas do intermediário tiver sido definido pelo comando mqsicreatebroker, uma DLQ com um nome padrão de SYSTEM.DEAD.LETTER.QUEUE tiver sido definida e ativada para esse gerenciador de filas.)
      3. Se a mensagem não puder ser colocada em uma dessas filas porque há um erro de MQPUT (incluindo a inexistência da fila), ou porque não podem ser identificadas pelo nó, ela não poderá ser manipulada com segurança sem risco de perdas.

        A mensagem não pode ser descartada, portanto, o fluxo de mensagens continuará tentando recuperar a mensagem. Ele registra a situação de erro gravando erros no log de erros local. Uma segunda indicação desse erro é o incremento contínuo do BackoutCount da mensagem na fila ponte de entrada.

        Se essa situação tiver ocorrido porque não existe fila, você poderá definir uma das filas de recuperação mencionadas acima. Se a condição que impede que a mensagem seja processada for corrigida, será possível aumentar temporariamente o valor do atributo BOTHRESH. Isto força a mensagem através do processamento normal.

Conceitos relacionados
Fluxos de Mensagem

Tarefas relacionadas
Tratando Erros em Fluxos de Mensagens
Gerenciando Erros no Nó Input
Utilizando Subfluxos
Criação de um Fluxo de Mensagens
Definindo o Conteúdo do Fluxo de Mensagens

Referências relacionadas
Nós Internos
WebSphere MQ Mobile Transport