Quando a integração de serviço converte uma mensagem para o formato do IBM MQ, ela configura os campos no MQMD e no MQRFH2
com base nos campos e propriedades do cabeçalho da mensagem de integração de serviço;
esses incluem campos de cabeçalho e propriedades de mensagem JMS aplicáveis à mensagem. Quando a integração de serviço converte uma mensagem do formato IBM MQ,
ela configura os campos e propriedades do cabeçalho da mensagem de integração de serviço do MQMD e MQRFH2 na mensagem do IBM MQ.
Trocando Mensagens entre Programas JMS Utilizando a Integração de Serviços e o IBM MQ
Geralmente, não é preciso estar ciente da conversão entre os formatos de mensagens para a troca de mensagens JMS entre a integração de serviço e o IBM MQ, pois a integração de serviço executa a conversão apropriada automaticamente, incluindo a codificação de caracteres e numérica. Entretanto, você poderá ter que aprender sobre conversão de mensagens se os aplicativos JMS não se comportarem como esperado ou se a configuração da integração de serviços contiver programas ou mediações do JMS que processe mensagens de/para programas IBM MQ não JMS.
Se os aplicativos da integração de serviços trocarem objetos MapMessage com aplicativos do IBM MQ, você poderá ter de especificar um formato de codificação de mensagens de mapa não padrão.
Propriedades de Mensagem do IBM MQ: MQMD e MQRFH2
As mensagens do WebSphere MQ
contêm propriedades de mensagens no descritor de mensagem (MQMD) e nas regras e no cabeçalho de formatação 2 (MQRFH2). A mensagem do
IBM MQ sempre inclui um MQMD, mas o MQRFH2 é opcional porque alguns aplicativos WebSphere MQ
não podem processar mensagens que contêm um MQRFH2. Para simplificar a interoperação, você pode configurar a integração de
serviço para omitir o MQRFH2 das mensagens para aplicativos que não podem processar o
MQRFH2. Quando a integração de serviço omite o MQRFH2, ela descarta os campos e propriedades do cabeçalho de integração de serviço correspondentes.
Nota: Uma pequena quantidade de informações do MQRFH2 também é armazenada nos campos MQMD. No entanto, esses campos MQMD não são exatamente equivalentes, tendem a ser menos específicos e não se pode contar com eles para fornecer um substituto adequado para as informações do MQRFH2.
Assim, se o aplicativo de recebimento puder aceitar um cabeçalho MQRFH2, você sempre deve fornecer um.
Da mesma forma, a integração de serviço pode receber mensagens dos aplicativos IBM MQ que geram mensagens sem nenhum MQRFH2. Quando a integração de serviço recebe uma mensagem sem nenhum MQRFH2, ela cria um cabeçalho de integração de serviço "best guess", obtendo toda a informação possível do MQMD e usando os valores padrão para os outros campos.
Para obter informações detalhadas sobre o conteúdo do descritor de mensagens e
os cabeçalhos de mensagens, consulte o IBM MQ Application
Programming Reference. Para obter detalhes do suporte JMS do IBM MQ, incluindo os detalhes de como o IBM MQ armazena propriedades de mensagens JMS e campos de cabeçalho no MQMD e no MQRFH2, consulte IBM MQ.
Propriedades de Mensagem do IBM MQ: Campos de Cabeçalho JMS
A tabela a seguir mostra como a integração de serviço mapeia campos de cabeçalho JMS de e para os campos do MQMD e MQRFH2 ao converter mensagens do e para o formato do IBM MQ.
A tabela mostra o campo MQRFH2 como folder.field, em que folder é o nome da pasta MQRFH2 que contém o campo e field é o nome do campo dentro da pasta MQRFH2.
Para diversos campos de cabeçalho JMS, há um campo MQMD e MQRFH2. Quando a integração de serviço está convertendo mensagens no formato IBM MQ, ela configura os campos MQMD e MQRFH2.Quando a integração de serviço converte as mensagens a partir do formato do IBM MQ, ela configura o campo do cabeçalho JMS a partir do campo MQRFH2, se estiver disponível,
caso contrário, a partir do campo do MQMD.
Tabela 1. Campos do Cabeçalho JMS, MQMD
e MQRFH2. A primeira coluna desta tabela lista os campos de cabeçalho JMS e a segunda coluna mostra os campos do MQMD que se relacionam aos campos de cabeçalho JMS na primeira
coluna. A terceira coluna mostra os campos do MQRFH2 que se relacionam aos campos de cabeçalho JMS na primeira
coluna. A quarta coluna fornece links, onde necessário, para as notas de rodapé que
aparecem após a tabela.Campo de Cabeçalho JMS |
Campo MQMD |
Campo MQRFH2 |
Comunicados |
JMSCorrelationID |
CorrelId |
jms.Cid |
Consulte a Nota 1. |
JMSDeliveryMode |
Persistência |
jms.Dlv |
Consulte a Nota 15. |
JMSDestination |
|
jms.Dst |
Consulte a Nota 16. |
JMSExpiration |
Expiração |
jms.Exp |
|
JMSMessageID |
MsgId |
|
|
JMSPriority |
Prioridade |
|
Consulte a Nota 2. |
JMSRedelivered |
BackoutCount |
|
Consulte a Nota 3. |
JMSReplyTo |
ReplyToQ e ReplyToQMgr |
jms.Rto |
Consulte a Nota 16. |
JMSTimestamp |
PutDate e PutTime |
jms.Tms |
|
JMSType |
|
mcd.Type |
|
Nota 1: O campo CorrelId do MQMD pode manter um ID de Correlação do IBM MQ padrão com 48 dígitos hexadecimais (24 bytes). O JMSCorrelationID pode ser um valor byte[], um valor de cadeia que contém caracteres hexadecimais e prefixado com "ID:", ou um valor de cadeia arbitrário não começando com "ID:". Os dois primeiros representam um ID de Correlação do IBM MQ padrão e são mapeados diretamente para o, ou do, campo CorrelId do MQMD (truncado ou preenchido com zeros quando aplicável); eles não usam o campo
jms.Cid do MQRFH2.
O terceiro (cadeia arbitrária)
usa o campo MQRFH2 jms.Cid; os primeiros 24 bytes
da cadeia, no formato UTF-8, são gravados no MQMD CorrelID.
Nota 2: O IBM MQ armazena o valor JMSPriority no campo jms.Pri MQRFH2, mas não usa nenhum valor
já presente nesse campo. A integração de serviço não verifica ou configura o campo MQRFH2 jms.Pri.
Nota 3: A integração de serviço configura o indicador JMSRedelivered para uma mensagem que ela recebe do IBM MQ com base no campo BackoutCount do MQMD; um valor BackoutCount diferente de zero indica que um recebimento anterior para a mensagem foi retrocedido.
Propriedades da Mensagem do
IBM MQ: Propriedades do JMS Definidas
A tabela a seguir mostra como a integração de serviço mapeia as propriedades definidas do JMS para o, ou a partir dos campos MQMD e MQRFH2 ao converter mensagens do e para o formato do IBM MQ.
A tabela mostra o campo MQRFH2 como folder.field, em que folder é o nome da pasta MQRFH2 que contém o campo e field é o nome do campo dentro da pasta MQRFH2.
Para diversas propriedades definidas pelo JMS, há um campo MQMD e um campo
MQRFH2. Quando a integração de serviço está convertendo mensagens no formato IBM MQ, ela configura os campos MQMD e MQRFH2.Quando a integração de serviço converte as mensagens a partir do formato do IBM MQ, ela configura a propriedade definida do JMS a partir do campo MQRFH2, se estiver disponível, caso contrário, a partir do campo do MQMD.
Tabela 2. Propriedades do JMS
com Campos MQMD e MQRFH2. A primeira coluna desta tabela lista as propriedades definidas do JMS e a segunda coluna mostra os campos do MQMD que se relacionam às propriedades definidas do JMS na primeira
coluna. A terceira coluna mostra os campos do MQRFH2 que se relacionam às propriedades definidas do JMS na primeira
coluna. A quarta coluna fornece links, onde necessário, para as notas de rodapé que
aparecem após a tabela.Propriedade Definida pelo JMS |
Campo MQMD |
Campo MQRFH2 |
Comunicados |
JMSXAppID |
PutApplName |
|
|
JMSXDeliveryCount |
BackoutCount |
|
|
JMSXGroupID |
GroupId |
jms.Gid |
Consulte as Notas 4 e 5. |
JMSXGroupSeq |
MsgSeqNumber |
jms.Seq |
|
JMSXUserID |
UserIdentifier |
|
|
Nota 4: O campo GroupId MQMD pode manter um GroupId IBM MQ padrão com 48 dígitos hexadecimais (24 bytes). O JMSXGroupID é um valor de cadeia que contém caracteres hexadecimais e prefixados com "ID:" ou um valor de cadeia arbitrário que não começa com "ID:". O primeiro representa um GroupId padrão do IBM MQe é mapeado diretamente para o, ou a partir do, campo GroupId do MQMD
(truncado ou preenchido com zeros quando aplicável). O segundo (sequência arbitrária)
usa o campo MQRFH2 jms.Gid; os primeiros 24 bytes
da sequência, no formato UTF-8, são gravados no MQMD GroupId.
Nota 5: Quando a integração de serviço converte mensagens para o formato do
IBM MQ,
se
JMSXGroupID tiver sido configurado, a integração de serviço também configurará o sinalizador
MQMF_MSG_IN_GROUP no campo
MsgFlags do MQMD. Observe que ao enviar mensagens de grupo, o aplicativo JMS de envio deve garantir que o sinalizador
MQMF_LAST_MSG_IN_GROUP esteja configurado como requerido (consulte
Propriedades da Mensagem do IBM MQ: Propriedades Específicas do Provedor JMS).
Propriedades da Mensagem do
IBM MQ: Propriedades Específicas do Provedor JMS
A tabela a seguir mostra como a integração de serviço mapeia as propriedades específicas do provedor do JMS para os, ou a partir dos, campos MQMD e MQRFH2 ao converter mensagens do e para o formato do WebSphere MQ. Geralmente, você usa essas propriedades para satisfazer requisitos especiais no aplicativo de recebimento, de modo que possa consultar o desenvolvedor ou administrador do aplicativo de recebimento para obter detalhes dos valores de propriedade requeridos.
Tabela 3. Propriedades Específicas do Provedor do JSM
com Campos MQMD e MQRFH2. A primeira coluna desta tabela lista as propriedades específicas do provedor JMS e a segunda coluna mostra os campos do MQMD que se relacionam às propriedades específicas do provedor JMS na primeira
coluna. A terceira coluna mostra os campos do MQRFH2 que se relacionam às propriedades específicas do provedor do JMS na primeira coluna. A quarta coluna fornece links, onde necessário, para as notas de rodapé que
aparecem após a tabela.Propriedade Específica do Provedor JMS |
Campo MQMD |
Campo MQRFH2 |
Comunicados |
JMS_IBM_ArmCorrelator |
|
mqext.Arm |
Consulte a Nota 6. |
JMS_IBM_Character_Set |
CodedCharacterSetId |
CodedCharacterSetId |
Consulte a Nota 7. |
JMS_IBM_Encoding |
Encoding |
Encoding |
Consulte a Nota 7. |
JMS_IBM_Feedback |
Feedback |
|
|
JMS_IBM_Format |
Formato |
Formato |
Consulte a Nota 7. |
JMS_IBM_Last_Msg_In_Group |
MQMF_LAST_MSG_IN_GROUP |
|
Consulte a Nota 8. |
JMS_IBM_MQMD_CorrelId |
CorrelId |
|
Consulte as Notas 9 e 10. |
JMS_IBM_MQMD_MsgId |
MsgId |
|
Consulte as Notas 9 e 11. |
JMS_IBM_MQMD_Persistence |
Persistence |
|
Consulte as Notas 9, 12 e 15. |
JMS_IBM_MQMD_ReplyToQ |
ReplyToQ |
|
Consulte as Notas 9, 13 e 16. |
JMS_IBM_MQMD_ReplyToQMgr |
ReplyToQMgr |
|
Consulte as Notas 9, 13 e 16. |
JMS_IBM_MsgType |
MsgType |
|
|
JMS_IBM_PutDate |
PutDate |
|
|
JMS_IBM_PutTime |
PutTime |
|
|
JMS_IBM_Report_* |
Report |
|
Consulte a Nota 14. |
JMS_IBM_RMCorrelator |
|
mqext.Wrm |
|
JMS_TOG_ARM_Correlator |
|
mqext.Arm |
Consulte a Nota 6. |
Nota 6: Você deve
usar o nome JMS_TOG_ARM_Correlator para o
correlacionador ARM. O nome JMS_IBM_ArmCorrelator está disponível
para compatibilidade com alguns programas JMS existentes.
Nota 7: As propriedades
JMS_IBM_Character_Set,
JMS_IBM_Encoding e
JMS_IBM_Format contêm informações sobre a carga útil da mensagem do
IBM MQ; ou seja, a parte da mensagem do
IBM MQ que segue o MQRFH2 (se houver) ou toda a mensagem do
IBM MQ, excluindo o MQMD, se não houver nenhum MQRFH2. Para mais informações sobre essas propriedades e sobre como usá-las, consulte
Mapeando o corpo da mensagem para e a partir do formato do IBM MQ.
Nota 8: MQMF_LAST_MSG_IN_GROUP é uma das sinalizações no campo MsgFlags do
MQMD.
Nota 9: As propriedades
JMS_IBM_MQMD_CorrelId,
JMS_IBM_MQMD_MsgId,
JMS_IBM_MQMD_Persistence,
JMS_IBM_MQMD_ReplyToQ
e
JMS_IBM_MQMD_ReplyToQMgr permitem que os aplicativos
JMS substituam o processamento padrão da integração de serviço dos campos
MQMD do
IBM MQ. Quando a integração de serviço
converte as mensagens para o formato do
IBM MQ, a integração de serviço configura
o campo MQMD correspondente para cada uma dessas propriedades se, e somente se,
essa propriedade tiver sido configurada explicitamente pelo aplicativo
(usando
setObjectProperty() ou
setNonNullProperty()).
A integração de
serviço configura cada uma dessas propriedades a partir do campo do MQMD correspondente quando
converter uma mensagem a partir do formato do IBM MQ.
Nota 10: A propriedade
JMS_IBM_MQMD_CorrelId substitui o
processamento padrão da propriedade
JMSCorrelationID.
Quando a integração de serviço converte as mensagens para o formato do
IBM MQ, a integração de serviço configura o campo
CorrelId MQMD para o valor (
byte[]) se a propriedade
JMS_IBM_MQMD_CorrelId for configurada explicitamente,
independentemente do valor (se houver) da propriedade
JMSCorrelationID.
Configurar a propriedade
JMS_IBM_MQMD_CorrelId não afeta o valor
do campo
jms.Cid MQRFH2
Quando a integração de serviço converte as mensagens a partir do formato do IBM MQ, a integração de serviço configura a propriedade JMS_IBM_MQMD_CorrelId para o valor (byte[]) do campo MQMD CorrelId,
independentemente do valor (se houver) da propriedade jms.Cid do MQRFH2.
Nota 11: A propriedade
JMS_IBM_MQMD_MsgId substitui o
processamento padrão do JMS da propriedade
JMSMessageID.
Quando a integração de serviço
converte as mensagens para o formato do
IBM MQ, a integração de serviço verifica se a propriedade
JMS_IBM_MQMD_MsgId foi configurada explicitamente. Se foi, a integração de serviço configura o campo
MsgId MQMD para esse valor (byte[]) e substitui o valor exclusivo do
JMSMessageID que o JMS aloca para a mensagem.
Quando a integração de serviço converte as mensagens a partir do formato do IBM MQ, a integração de serviço configura a propriedade JMS_IBM_MQMD_MsgId para o valor (byte[]) do campo MsgId MQMD.
Nota 12: A propriedade
JMS_IBM_MQMD_Persistence substitui o processamento padrão da propriedade
JMSDeliveryMode.
Quando a integração de serviço converte as mensagens para o formato do
IBM MQ, a integração de serviço configura o campo
Persistência MQMD para o valor (número inteiro) se a propriedade
JMS_IBM_MQMD_Persistence for configurada explicitamente, independentemente do valor (se houver) da propriedade
JMSDeliveryMode.
Configurar a propriedade
JMS_IBM_MQMD_Persistence não afeta o valor
do campo
jms.Dlv do MQRFH2.
Quando a integração de serviço converte as mensagens a partir do formato do IBM MQ, a integração de serviço configura a propriedade JMS_IBM_MQMD_Persistence para o valor (número inteiro) do campo Persistência do MQMD, independentemente do valor (se houver) do campo jms.Dlv do MQRFH2.
Nota 13: As propriedades
JMS_IBM_MQMD_ReplyToQ e
JMS_IBM_MQMD_ReplyToQMgr substituem o processamento padrão
da propriedade
JMSReplyTo.
Quando a integração de serviço converte as mensagens para o formato do
IBM MQ, a integração de serviço configura o campo
ReplyToQ do MQMD para o valor (sequência)
se a propriedade
JMS_IBM_MQMD_ReplyToQ for configurada explicitamente
e configura o campo
ReplyToQMgr do MQMD para o valor (sequência)
se a propriedade
JMS_IBM_MQMD_ReplyToQMgr for configurada explicitamente,
independentemente do valor (se houver) da propriedade
JMSReplyTo.
Configurar o campo
JMS_IBM_MQMD_ReplyToQ ou
JMS_IBM_MQMD_ReplyToQMgr não afeta o valor do campo
jms.Rto do MQRFH2.
Quando a integração de serviço converte as mensagens a partir do formato do IBM MQ, a integração de serviço configura as propriedades JMS_IBM_MQMD_ReplyToQ e JMS_IBM_MQMD_ReplyToQMgr para os valores (sequência) dos campos ReplyToQ e ReplyToQMgr do MQMD, independentemente do valor (se houver) do campo jms.Rto do MQRFH2.