[z/OS]

Configurações da Factory de Conexão para Beans Acionados por Mensagens do ASF que Usam o WebSphere MQ como o Provedor de Sistemas de Mensagens no z/OS

É possível ajustar uma variedade de configurações de factory de conexão para controlar a criação de conexões e sessões para que o bean acionado por mensagens (MDB) funcione.

Configurações da Factory de Conexão

Para conectar um aplicativo e um servidor a um gerenciador de filas específico com parâmetros de autenticação, os aplicativos e as portas listener de mensagens são ligadas a factories de conexão. O servidor usa o mesmo modelo administrativo para atender mensagens que chegam para entrega aos beans acionados por mensagens que o usado pelo aplicativo para explorar o JMS, em que as portas listener de mensagens são ligadas a uma factory de conexão de fila (ou factory de conexão de tópico) e a uma fila correspondente (ou tópico).

Para cada factory de conexão, você deve especificar configurações do provedor de sistemas de mensagens (por exemplo, configurações do gerenciador de filas), propriedades do conjunto de conexões e propriedades do conjunto de sessões. As configurações para as propriedades número máximo de conexões do conjunto de conexões e número máximo de conexões do conjunto de sessões de uma factory de conexão dependem de você estar usando a factory de conexão para uma porta listener, para um aplicativo ou para ambos.

Configurações do Número Máximo de Conexões do Conjunto de Conexões

Para evitar a espera por uma conexão JMS porque o limite definido pelo WebSphere Application Server foi atingido, configure o número máximo de conexões do conjunto de conexões com pelo menos a soma dos seguintes valores:
O número de beans acionados por mensagens que são mapeados para qualquer porta listener mapeada nessa factory de conexão
Um bean acionado por mensagens pode obter uma conexão JMS ao executar sua lógica de aplicativo em onMessage(), por exemplo:
  • Encaminhando a mensagem para outro destino ou enviando uma resposta
  • Atualizando um log, mas executando suas próprias chamadas não relacionadas ao JMS

Seja qual for o caso, conte 'um' para esse bean acionado por mensagens porque esta é a conexão usada pela porta listener.

Se a lógica onMessage() do bean acionado por mensagens obtiver uma conexão JMS, inclua o número de encadeamentos trabalhadores do servidor na contagem máxima de conexões. Caso contrário, não inclua a contagem máxima de conexões para esse componente de aplicativo (MDB).

A contagem máxima de conexões
Localize, primeiramente, o número máximo de conexões obtidas em um único dispatch de aplicativo (geralmente ‘1'), verificando todos os aplicativos que usam essa factory de conexão. Em seguida, multiplique esse número pelo número de encadeamentos trabalhadores em um servidor para calcular a contagem máxima de conexões.
Nota:
  • Só conte encadeamentos trabalhadores para um servidor porque cada servidor possui sua própria factory de conexão com conjuntos de conexões e sessões.
  • Inclua também outros componentes de aplicativos não MDB que usem essa factory de conexão para executar chamadas JMS. Mas, independentemente de quantos componentes de aplicativos MDB ou não MDB usam essa factory de conexão, se cada um deles usar apenas uma conexão JMS por dispatch, a contagem máxima de conexões será o número de encadeamentos de trabalhador do servidor (não o número de aplicativos multiplicado pelo número de encadeamentos de trabalhador do servidor).

Configurações do Número Máximo de Conexões do Conjunto de Sessões

Para o processamento da porta listener do MDB em todos os casos típicos, configure a propriedade número máximo de conexões do conjunto de sessões com o número de encadeamentos trabalhadores em um único servidor.

Os motivos são o fato de que as sessões JMS não são compartilhadas entre os dispatches de aplicativos ou pela infraestrutura da porta listener, mesmo para os clientes do mesmo connection factory, juntamente com o fato de que há um conjunto de sessões exclusivo para cada conexão JMS obtida do connection factory (embora as configurações da propriedade de conjunto sejam especificadas apenas uma vez, no nível do connection factory).

É possível imaginar um caso para o qual o mesmo connection factory seja utilizado por uma porta listener e por um aplicativo, com o aplicativo tendo um requisito maior para o Número máximo de conexões na configuração do conjunto de sessões, mas não é o caso de se discutir isso aqui.

Importante: Você deve restringir o trabalho simultâneo do MDB em um servidor, definindo o Número máximo de conexões desse conjunto de sessões com um número inferior ao número de encadeamentos de trabalhadores do servant porque, nesse caso, um pedido de trabalho do MDB pode ser despachado sobre um servant sem uma sessão disponível para processar a mensagem. O encadeamento do trabalhador aguardaria, então, que uma sessão se tornasse disponível, tentando o recurso de encadeamento do trabalhador útil.

Devo Utilizar Algumas ou Vários Connection Factories?

Talvez você prefira manter esses cálculos simples, por exemplo, criando uma factory de conexão separada para cada bean acionado por mensagens (e, nesse caso, o valor da propriedade Número máximo de conexões do conjunto de conexões pode ser configurado como 1). Ou você pode preferir gerenciar poucos objetos administrativos do connection factory.

As conexões e as sessões usadas para processamento do MDB não podem ser compartilhadas (isto é, elas não podem ser usadas por mais de um fluxo de cada vez). Portanto, você não deve tratar o conjunto como uma maneira de usar menos connection factories. Ou seja, a inclusão de outro connection factory não impede o uso de conjuntos de conexões que poderia, de outra forma, ser explorado pelo processamento da porta listener do MDB.

Connection factories - exemplos

Cenário do Exemplo 1:
  • Cada servant possui 12 encadeamentos de trabalhadores. (O número de servants no servidor não é importante, uma vez que cada servant obtém seus próprios conjuntos).
  • A porta listener LP1 é mapeada para a connection factory CF1. O bean acionado por mensagens MDB1 é mapeado para LP1. O código de aplicativo onMessage() de MDB1 coloca uma nova mensagem em uma fila de redirecionamento e, assim, MDB1 possui uma referência de recurso que também é resolvida para CF1.
  • Além disso, no mesmo servidor, a porta listener LP2 é definida e mapeada para a connection factory CF2. Os beans acionados por mensagens MDB2A e MDB2B são definidos no mesmo arquivo ejb-jar e são ambos mapeados para a LP2 com seletores JMS complementares. Cada um dos códigos de aplicativo onMessage() de MDB2A e MDB2B realiza algum registro, mas nenhum bean acionado por mensagens realiza sua própria chamada de API do JMS.
Solução do Exemplo 1:
  • Para a connection factory CF1, contamos um para MDB1. O aplicativo MDB1 (que também utiliza o connection factory CF1 para enviar sua mensagem de redirecionamento) utiliza uma conexão JMS, para a qual contamos o número de encadeamentos de trabalhadores (12), multiplicado por um. Nosso total para o Número máximo de conexões do conjunto de conexões para o connection factory CF1 será, então, 13 = 12 + 1.
  • Para o connection factory CF2, contamos um para cada um de MDB2A e MDB2B. Não há aplicativos que usem CF2 (apenas a infraestrutura da porta listener), portanto, configure o Número máximo de conexões do conjunto de conexões da factory de conexão CF2 igual a 2.
  • Para cada uma dos dois connection factories, o valor de Número máximo de conexões do conjunto de sessões é definido como 12.
Cenário do Exemplo 2:
  • Novamente, cada servant possui 12 encadeamentos de trabalhadores. Neste exemplo, desejamos utilizar apenas um única connection factory, CF1.
  • Cada uma das duas portas listener LP1 e LP2, é mapeada para o connection factory CF1. Os beans acionados por mensagens MDB1, MDB2 e MDB3 fazem parte de três arquivos EAR exclusivos do aplicativo. MDB1 é mapeado para LP1, mas MDB2 e MDB3 são mapeados para LP2.
Solução do Exemplo 2:
  • Até agora contamos que precisamos de três conexões para o connection factory CF1. No entanto, há ainda um componente de servlet que coloca mensagens em uma fila e utiliza o mesmo connection factory CF1. Portanto, para o connection factory CF1, a configuração do Número máximo de conexões do conjunto de conexões é 15 = 3 + 12.

Í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=cprf_tunezmdb_cf
Nome do arquivo: cprf_tunezmdb_cf.html