[ UNIX, Linux, Windows, IBM i ]

Sub-rotina MessageBuffer do Arquivo de Configuração do Cliente

Use a sub-rotina MessageBuffer para especificar informações sobre buffers de mensagens.

Nota: a descrição de cada atributo dessa sub-rotina indica quais clientes IBM® MQ podem ler esse atributo. Para obter uma tabela de resumo para todas as sub-rotinas de arquivo de configuração do IBM MQ MQI client , consulte Quais atributos do IBM MQ podem ser lidas por cada cliente

Os atributos a seguir podem ser incluídos na sub-rotina MessageBuffer:

MaximumSize = inteiro | 1
Tamanho, em kilobytes, do buffer de leitura antecipada, no intervalo de 1 a 999999.

Esse atributo pode ser lido por clientes C, não gerenciados .NET, IBM MQ classes for Javae IBM MQ classes for JMS, gerenciados .NETe gerenciados XMS .NET .

Os seguintes valores especiais existem:
-1
O cliente determina o valor apropriado.
0
A leitura antecipada está desativada para o cliente.
PurgeTime = inteiro | 600
Intervalo, em segundos, após o qual as mensagens deixadas no buffer de leitura antecipada são limpas.

Esse atributo pode ser lido por clientes C, não gerenciados .NET, IBM MQ classes for Javae IBM MQ classes for JMS, gerenciados .NETe gerenciados XMS .NET .

Se o aplicativo cliente estiver selecionando mensagens com base no MsgId ou CorrelId, é possível que o buffer de leitura antecipada pode conter mensagens enviadas ao cliente com um MsgId ou CorrelId solicitado anteriormente. Estas mensagens estariam, então, presas no buffer de leitura antecipada até um MQGET ser emitido com um MsgId ou CorrelId apropriado. É possível limpar mensagens do buffer de leitura antecipada configurando PurgeTime. Qualquer mensagem que tenha permanecido no buffer de leitura antecipada por mais do que o intervalo de limpeza será automaticamente limpa. Estas mensagens já foram removidas da fila no gerenciador de filas, portanto, a menos que elas estejam sendo navegadas, elas são perdidas.

O intervalo válido está no intervalo de 1 a 999 999 segundos ou o valor especial 0, significando que nenhuma limpeza ocorre.

UpdatePercentage = inteiro | -1
O valor da porcentagem de atualização, no intervalo de 1 - 100, usado no cálculo do valor do limite para determinar quando um aplicativo cliente faz um nova solicitação ao servidor. O valor especial -1 indica que o cliente determina o valor apropriado.

Esse atributo pode ser lido por clientes C, não gerenciados .NET, IBM MQ classes for Javae IBM MQ classes for JMS, gerenciados .NETe gerenciados XMS .NET .

O cliente envia periodicamente uma solicitação para o servidor indicando quantos dados o aplicativo cliente consumiu. Uma solicitação é enviada quando o número de bytes, n, recuperados pelo cliente por meio de chamadas de chamadas de clientes excede um limite T. n é reajustado a zero a cada vez que uma nova solicitação é enviada para o servidor.

O limite T é calculado conforme a seguir:
T = Upper - Lower

Superior é igual ao tamanho do buffer de leitura antecipada, especificado pelo atributo MaximumSize, em Kilobytes. Seu padrão é 100 Kb.

Inferior é menor que Superior e é especificado pelo atributo UpdatePercentage. Este atributo é um número no intervalo de 1 a 100 e possui um padrão de 20. Inferior é calculado conforme a seguir:
Lower = Upper x UpdatePercentage / 100
Exemplo 1:
Os atributos MaximumSize e UpdatePercentage têm seus padrões de 100 Kb e 20 Kb.
O cliente chama MQGET para recuperar uma mensagem e faz isso repetidamente. Isto continua até MQGET ter consumido n bytes.
Usando o cálculo
T = Upper - Lower
T é (100-20) = 80 Kb.
Portanto, quando chamadas MQGET removeram 80 Kb de uma fila, o cliente faz um nova solicitação automaticamente.
Exemplo 2:
Os atributos MaximumSize têm seu padrão de 100 Kb e um valor de 40 é escolhido para UpdatePercentage.
O cliente chama MQGET para recuperar uma mensagem e faz isso repetidamente. Isto continua até MQGET ter consumido n bytes.
Usando o cálculo
T = Upper - Lower
T é (100-40) = 60 Kb
Portanto, quando chamadas MQGET removeram 60 Kb de uma fila, o cliente faz um nova solicitação automaticamente. Isto ocorre antes que no EXAMPLE 1 em que os padrões foram usados.

Portanto, escolher um limite maior T tende a diminuir a frequência na qual as solicitações são enviadas do cliente para o servidor. De modo inverso, escolher um menor limite T tende a aumentar a frequência das solicitações que são enviadas do cliente para o servidor.

Entretanto, escolher um limite T maior pode significar que o ganho de desempenho da leitura antecipada é reduzido pois a chance do buffer de leitura antecipada se tornar vazio pode aumentar. Quando isto ocorre, uma chamada MQGET pode precisar pausar, aguardando os dados chegarem do servidor.