[AIX Solaris HP-UX Linux Windows][IBM i]

Como as Mensagens São Processadas no Modo não ASF

No modo não ASF, os encadeamentos ficam ativos a partir do momento em que a porta do listener é iniciada. O número de encadeamentos ativos é determinado pelo valor especificado para Máximo de Sessões. O número de encadeamentos especificado em Máximo de Sessões fica ativo, independentemente do número de mensagens que estão disponíveis para serem processadas. Cada encadeamento ativo é uma conexão de rede física individual.

Se você estiver usando o IBM MQ Versão 7.0 ou posterior como seu provedor de sistemas de mensagens, será possível ter até dez encadeamentos compartilhando uma única conexão de rede física.

Para WebSphere Application Server Versão 7 e posterior, as portas listener são estabilizadas. Para obter informações adicionais, leia o artigo sobre recursos estabilizados. Você deve planejar migrar as configurações de implementação do bean acionado por mensagens do WebSphere MQ do uso de portas do listener para o uso de especificações de ativação. [AIX Solaris HP-UX Linux Windows][IBM i]Para obter informações adicionais sobre como configurar as especificações de ativação para o modo não ASF, veja Configurando especificações de ativação para o modo não ASF. No entanto, você não deve iniciar esta migração até ter certeza de que o aplicativo não precisa funcionar nos servidores de aplicativos anteriores ao WebSphere Application Server Versão 7. Por exemplo, se você possuir um cluster do servidor de aplicativos com alguns membros na Versão 6.1 e alguns em uma versão posterior, não deverá migrar os aplicativos nesse cluster para usar as especificações de ativação até depois de ter migrado todos os servidores de aplicativos no cluster para a versão posterior.

Processamento de Mensagens no Modo Não ASF

Ative o modo não ASF ao especificar um valor diferente de zero para a propriedade customizada de serviço de listener de mensagens NON.ASF.RECEIVE.TIMEOUT. A propriedadeNON.ASF.RECEIVE.TIMEOUT atua como um comutador que desativa o modo ASF e também como um valor de tempo limite para o método receive().

Nota: As propriedades customizadas do serviço de listener de mensagens a seguir não funcionam no modo não ASF:
  • SERVER.SESSION.POOL.REAP
  • SERVER.SESSION.POOL.UNUSED.TIMEOUT
  • SERVER.SESSION.POOL.UNUSED.TIMEOUT.Ipaname

O seguinte diagrama mostra como um processamento de mensagem ocorre entre o WebSphere Application Server e o IBM MQ no modo não ASF:

Figura 1. Processamento de Mensagens no Modo Não ASF
[AIX Solaris HP-UX Linux Windows][IBM i]A figura é descrita no texto circundante.
Como mostra o diagrama, quando o serviço de listener de mensagens estiver operando no modo não ASF, as mensagens serão processadas da seguinte forma:
  1. Quando a porta do listener é iniciada, ela obtém um encadeamento do conjunto de encadeamentos do serviço de listener de mensagens.
  2. A porta do listener abre uma conexão com o gerenciador de filas do IBM MQno encadeamento e cria um consumidor de mensagens JMS. O consumidor de mensagens recebe no destino JMS no qual a porta do listener está configurada para receber.
  3. A porta do listener cria uma transação para gerenciar o processamento de mensagens.
  4. O encadeamento chama o método receive() no consumidor de mensagens para receber mensagens no destino. Se o método receive() não detectar uma mensagem no tempo especificado para NON.ASF.RECEIVE.TIMEOUT, o servidor de aplicativos retrocederá a transação ativa e iniciará uma nova. O encadeamento começa, então, a chamar o método receive() novamente.
  5. Quando o consumidor de mensagens detecta uma mensagem, ele verifica se a mensagem é adequada para o MDB que está usando a porta do listener.
  6. Se a mensagem for adequada, o método receive() irá retirá-la do destino e a enviará para o encadeamento.
  7. O encadeamento chama o método onMessage() do MDB no consumidor de mensagens e a mensagem é processada.
  8. Se a mensagem concluir o processamento com êxito, a transação será confirmada. Se a mensagem não for processada com êxito, a transação será retrocedida.
  9. Uma nova transação é iniciada e o consumidor de mensagens chama o método receive() para receber novas mensagens.
O número de encadeamentos que um MDB pode processar simultaneamente é determinado pelo valor da propriedade Máximo de Sessões especificado para a porta do listener. Se você configurar Máximo de Sessões para o valor padrão de 1, isso significa que o MDB pode processar apenas uma mensagem por vez. Se desejar processar mais de uma mensagem simultaneamente, isso poderá ser feito no modo ASF ao configurar o Máximo de Sessões para um valor maior que 1. Por exemplo, se Máximo de Sessões for configurado para 2, as mensagens serão processadas da seguinte forma:
  1. Quando a porta do listener é iniciada, ela obtém dois encadeamentos do conjunto de encadeamentos do serviço de listener de mensagens.
  2. A porta do listener cria um consumidor de mensagens e uma transação em cada encadeamento. Os consumidores de mensagens recebem no destino no qual a porta do listener está configurada para receber.
  3. Ambos os consumidores de mensagens chamam o método receive() para receber mensagens no destino. Os consumidores competem para obter mensagens do destino.
  4. Quando um dos consumidores recupera com êxito a mensagem, ele a processa chamando o método onMessage() do MDB. O outro consumidor de mensagens continua chamando o método receive() para receber mensagens no destino.

Como Evitar Tempos Limites de Transação Indesejados

Se seu sistema de mensagens estiver em execução no modo não ASF, para evitar tempos limites de transação não desejados, você deverá permitir uma quantidade suficiente de tempo para que o processamento seja concluído antes do tempo limite total do tempo de vida da transação ser atingido. Portanto, você deve certificar-se de que o valor especificado para a propriedade customizada do serviço de listener de mensagens NON.ASF.RECEIVE.TIMEOUT seja menor do que o valor especificado para a propriedade do serviço de transações Tempo Limite Total do Tempo de Vida da Transação e, também, que a diferença entre os valores das duas propriedades seja maior do que a quantidade de tempo que o método onMessage() do bean acionado por mensagens (MDB) demora para processar a mensagem.

Conforme mostrado no seguinte exemplo, se essas propriedades não estiverem configuradas corretamente, as transações poderão atingir o tempo imite antes que elas sejam concluídas. Isso ocorre porque o encadeamento começa a chamar o método receive() assim que a transação é criada. No exemplo a seguir, NON.ASF.RECEIVE.TIMEOUT é configurado para 110000 milissegundos (110 segundos), Tempo limite de tempo vida da transação total é configurado para 120 segundos e o método onMessage () do MDB leva 15 segundos para processar uma mensagem. O exemplo supõe que uma mensagem não aparece no destino até que o método receive() tenha quase atingido o tempo limite:
  1. A porta do listener é iniciada. Ela aloca um encadeamento a partir do conjunto de encadeamentos e cria uma transação e um consumidor de mensagens no encadeamento.
  2. O encadeamento chama o método receive() para receber mensagens.
  3. Após 110 segundos, uma mensagem aparece no destino.
  4. O encadeamento remove a mensagem do destino e chama o método onMessage() do MDB para iniciar o processamento da mensagem.
  5. 10 segundos depois, o tempo limite da transação é atingido. O servidor de aplicativos marca a transação para retrocesso.
  6. 5 segundos depois, o método onMessage() conclui o processamento da mensagem e tenta confirmar a transação.
  7. A quantidade de tempo total que decorreu desde que a transação foi iniciada é 125 segundos (110 segundos aguardando uma mensagem, mais 15 segundos para processar a mensagem). Como isso é mais longo que o tempo limite da transação, o servidor de aplicativos evita que a transação seja confirmada e ela é retrocedida.

Para obter informações adicionais sobre como configurar as propriedades NON.ASF.RECEIVE.TIMEOUT e Tempo limite de tempo de vida da transação total para evitar tempos limites da transação indesejados, consulte as tarefas relacionadas.


Ícone que indica o tipo de tópico Tópico de Conceito



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cmb_asfnonasf_nonasf
Nome do arquivo: cmb_asfnonasf_nonasf.html