Como as Mensagens São Processadas no Modo ASF
No modo ASF, as sessões do servidor e os encadeamentos são alocados para trabalho somente quando uma mensagem adequada para o bean acionado por mensagens (MDB) é detectada. 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.
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. 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.
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)

- Quando a porta do listener é iniciada, ela abre uma conexão com o gerenciador de filas do IBM MQ e cria um agente de fila interno.
- O agente de fila recebe mensagens no destino JMS.
- O agente de fila detecta uma mensagem.
- O agente de fila verifica se a mensagem é adequada para o MDB que está usando a porta do listener.
- Se a mensagem for adequada para o MDB, a porta do listener alocará um encadeamento a partir do conjunto de encadeamentos do serviço de listener de mensagens e alocará uma sessão do servidor a partir do conjunto de sessões do servidor do servidor de aplicativos. Se esta for a primeira vez que a sessão do servidor foi usada desde que a porta do listener foi iniciada, ela abrirá uma conexão para o provedor JMS. A sessão do servidor alocada é executada no encadeamento alocado.
- O agente de fila passa o ID da mensagem para a sessão do servidor. Em seguida, inicia o recebimento de mensagens novamente.
- A sessão do servidor usa o ID de mensagem para recuperar a mensagem do destino.
- A sessão do servidor processa a mensagem chamando o método onMessage() do MDB.
- Quando a mensagem for processada, a sessão do servidor sai e retorna para o conjunto de sessões do servidor de aplicativos. A conexão que a sessão do servidor abriu com o provedor JMS permanece aberta para que a sessão do servidor não precise estabelecer novamente a conexão na próxima vez em que ele for usado.
- O encadeamento sai e retorna para o conjunto de encadeamentos do serviço de listener de 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. Portanto, se o agente de fila localizar uma segunda mensagem antes de o processamento da primeira mensagem ser concluído, o agente da fila bloqueará a segunda mensagem até o processamento da primeira ser concluído e a sessão do servidor estar disponível.
- O agente de fila detecta a primeira mensagem e aloca um encadeamento e uma sessão do servidor como no primeiro exemplo. A mensagem é processada usando o método onMessage() do MDB.
- Enquanto a primeira mensagem está sendo processada, o agente de fila inicia o recebimento de mensagens novamente.
- O agente de fila detecta a segunda mensagem e aloca um segundo encadeamento e uma segunda sessão do servidor. A mensagem é processada usando o método onMessage() do MDB.
- Quando a primeira mensagem é processada, a primeira sessão do servidor sai e retorna para o conjunto de sessões do servidor. O primeiro encadeamento sai e retorna para o conjunto de encadeamentos.
- Quando a segunda mensagem é processada, a segunda sessão do servidor sai e retorna para o conjunto de sessões do servidor. O segundo encadeamento sai e retorna para o conjunto de encadeamentos.
![[z/OS]](../images/ngzos.gif)
O seguinte diagrama mostra como o sistema de mensagens ocorre entre o WebSphere Application Server e o IBM MQ quando o serviço de listener de mensagens estiver operando no modo ASF.

- Quando a porta do listener é iniciada, ela abre uma conexão com o gerenciador de filas do IBM MQ e cria um agente de fila interno.
- O agente de fila recebe mensagens no destino JMS.
- O agente de fila detecta uma mensagem e verifica se ela é adequada para o MDB que está usando a porta do listener.
- Se a mensagem for adequada para o MDB, o agente de fila passará o ID de mensagem para um registro do trabalho. O registro do trabalho é, então, enviado para a fila do workload management (WLM).
- O agente de fila inicia o recebimento de mensagens novamente.
- A fila do WLM inicia um dispatcher ASF dentro de uma região servidora para processar o registro do trabalho.
- O dispatcher ASF aloca uma sessão do servidor a partir do conjunto de sessões do servidor.
- A sessão do servidor usa o ID de mensagem a partir do registro do trabalho para recuperar a mensagem do destino.
- A sessão do servidor processa a mensagem chamando o método onMessage() do MDB.
- Quando a mensagem é processada, a sessão do servidor sai e retorna para o conjunto de sessões do servidor de aplicativos. A conexão que a sessão do servidor abriu para o provedor JMS permanece aberta para que a sessão do servidor não precise restabelecer a conexão na próxima vez que ela for usada.
- O encadeamento sai e retorna para o conjunto de encadeamentos do serviço de listener de 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. Portanto, se o agente de fila localizar uma segunda mensagem antes de o processamento da primeira mensagem ser concluído, o agente da fila bloqueará a segunda mensagem até o processamento da primeira ser concluído e a sessão do servidor estar disponível.
- O agente de fila detecta a primeira mensagem e configura um registro do trabalho, como no primeiro exemplo.
- O registro do trabalho é enviado para a fila do WLM e um dispatcher ASF é configurado em uma região servidora.
- O dispatcher ASF aloca uma sessão do servidor e a mensagem é processada usando o método onMessage() do MDB.
- Enquanto a primeira mensagem está sendo processada, o agente de fila inicia o recebimento de mensagens novamente.
- O agente de fila detecta a segunda mensagem e aloca um segundo encadeamento e uma segunda sessão do servidor. A mensagem é processada usando o método onMessage() do MDB.
- Quando a primeira mensagem é processada, a primeira sessão do servidor sai e retorna para o conjunto de sessões do servidor. O primeiro encadeamento sai e retorna para o conjunto de encadeamentos.
- Quando a segunda mensagem é processada, a segunda sessão do servidor sai e retorna para o conjunto de sessões do servidor. O segundo encadeamento sai e retorna para o conjunto de encadeamentos.