![[ UNIX, Linux, Windows, IBM i ]](ngmulti.gif)
Nível de isolamento
Em IBM® MQ, uma mensagem em uma fila pode estar visível antes de uma atualização do banco de dados, dependendo do design de isolamento de transação implementado dentro do banco de dados.
Quando um gerenciador de filas IBM MQ está trabalhando como um gerenciador de transações XA, para coordenar atualizações em gerenciadores de recursos XA, o protocolo de commit a seguir é seguido:
- Prepare todos os gerenciadores de recursos XA.
- Confirme o gerenciador de recursos do gerenciador de filas IBM MQ .
- Confirme outros gerenciadores de recursos.
Isso não será um problema se o banco de dados estiver configurado de modo que as chamadas API do banco de dados do aplicativo esperem que as atualizações pendentes sejam concluídas.
É possível resolver isso configurando o banco de dados de forma diferente. O tipo de configuração necessária é referido como o "nível de isolamento". Para obter mais informações sobre os níveis de isolamento, consulte a documentação do banco de dados. Você pode, alternativamente, configurar o gerenciador de filas para confirmar os gerenciadores de recursos na ordem reversa a seguir:
- Prepare todos os gerenciadores de recursos XA.
- Confirme outros gerenciadores de recursos.
- Confirme o gerenciador de recursos do gerenciador de filas IBM MQ .
Quando você altera o protocolo o gerenciador de filas IBM MQ é confirmado por último, portanto, aplicativos que lêem mensagens das filas veem uma mensagem somente após a conclusão da atualização do banco de dados correspondente.
Para configurar o gerenciador de filas para usar esse protocolo mudado, configure a variável de ambiente AMQ_REVERSE_COMMIT_ORDER.
Defina essa variável de ambiente no ambiente a partir do qual o strmqm é executado para iniciar o gerenciador de filas. Por exemplo, execute no shell a seguir antes de iniciar o gerenciador de filas:
export AMQ_REVERSE_COMMIT_ORDER=1
Nota: A configuração dessa variável de ambiente pode causar uma entrada de log extra por transação, portanto, isso terá um pequeno impacto no desempenho de cada transação.