Solucionando problemas dos fluxos de trabalho do JMS
Solucionando problemas dos fluxos de trabalho do JMS
Executo uma sessão para gravar mensagens JMS em um provedor WebSphere MQ JMS. A sessão é concluída com êxito, mas as mensagens de destino não contêm os campos de propriedade.
Ao configurar a fábrica de conexão no JNDI para o provedor WebSphere MQ JMS, você define o valor TARGETCLIENT para MQ. Quando WebSphere MQ JMS recebe as mensagens de destino, ele as traduz para o formato de mensagem WebSphere MQ. As mensagens no formato WebSphere MQ contém campos de cabeçalho e de corpo. Elas não contêm campos de propriedade.
Para receber mensagens de destino com campos de propriedade, defina o valor do TARGETCLIENT para JMS na configuração do JNDI e execute a sessão novamente. Para obter mais informações sobre o formato dos campos de propriedade em mensagens do WebSphere MQ JMS, consulte a documentação do WebSphere MQ JMS.
Executo uma sessão para gravar dados de uma origem WebSphere MQ JMS em um destino JMS. A sessão falha porque o Serviço de Integração rejeita os dados dos seguintes campos de cabeçalho: JMSDestination, JMSReplyTo e JMSMessageID.
Quando você tem um mapeamento que passa dados do cabeçalho de mensagens JMS a partir de uma origem JMS para um destino JMS e a origem é o WebSphere MQ JMS, ele deduz os dados para os campos de cabeçalho JMSDestination, JMSReplyTo e JMSMessageID.
Por exemplo, o Serviço de Integração grava dados do campo JMSDestination na origem para o campo JMSDestination no destino. O valor do campo JMSDestination na origem é JMS_1. Quando o Serviço de Integração grava os dados no destino, o valor é queue://QM_pcserv/JMS_1. O Serviço de Integração rejeita a mensagem.
Use uma transformação de Expressão no mapeamento para extrair o valor correto e passá-lo para o destino.
Executo uma sessão para ler dados de uma origem JMS e gravar dados em um destino que não é JMS. O valor da ID da mensagem para o campo JMSMessageID começa com “ID:" em vez de somente conter a ID da mensagem.
Quando você tem um mapeamento que passa dados do campo JMSMessageID em uma origem JMS para um destino que não é JMS, o JMS inclui a string “ID:” no campo JMSMessageID. Para remover os caracteres “ID:” do início da ID da mensagem, é necessário usar uma transformação de Expressão no mapeamento.
Executo uma sessão para gravar mensagens em um destino WebSphere MQ JMS. O intervalo de confirmação para a sessão era alto. A sessão falha devido a uma exceção de JMS. Ela falha ao enviar mensagens para a fila do WebSphere MQ.
Quando você executa uma sessão com um intervalo de confirmação alto para gravar mensagens em um destino WebSphere MQ JMS, o Serviço de Integração grava as mensagens no WebSphere MQ JMS. O WebSphere MQ JMS grava as mensagens em um arquivo de cache. Como o intervalo de confirmação é alto, o arquivo de cache pode ficar sem memória. Como resultado, a sessão falha. Para evitar que a sessão falhe, diminua o intervalo de confirmação. Ou aumente o tamanho do arquivo de cache do WebSphere.
Tentei executar diversas sessões simultaneamente para ler mensagens de várias origens JMS e gravá-las em um único destino. As sessões usaram a condição de finalização Tempo ocioso e foram concluídas quando a condição foi atendida. Quando as sessões foram concluídas, o registro da sessão reportou que o Serviço de Integração leu somente um número pequeno de mensagens da origem durante algumas sessões.
Ao executar diversas sessões simultaneamente para ler mensagens de várias origens JMS e gravá-las em um único destino, o Serviço de Integração poderá não ler as mensagens da origem por alguns instantes, enquanto ele grava os dados no destino. Como resultado, o Serviço de Integração atende às condições de finalização Tempo ocioso e encerra a sessão. Para garantir que cada sessão lê o número adequado de mensagens, especifique um valor mais alto para a condição de finalização Tempo ocioso.
Recebi a seguinte mensagem de erro ao executar uma sessão JMS com um provedor WebSphere MQ:
Esta mensagem de erro é exibida mesmo se a sessão for concluída com êxito. Para evitar que a mensagem de erro seja exibida, inclua o diretório <WebSphere MQ JMS>\lib no CLASSPATH.