Mensagem MQ recebida como uma lista de 'bytes' em vez de texto

estou a usar a Websphere MQ e a ler mensagens da fila usando a integração de molas e um adaptador jms.

quando adiciono manualmente mensagens à fila, a aplicação lê-as e lê os dados como um String e está tudo bem.

No entanto, quando uma parte externa está a adicionar mensagens à fila, a aplicação está a lê-las como um conjunto de bytes e, em seguida, a lançar esta excepção:

Caused by: java.lang.ClassCastException: [B cannot be cast to java.lang.String

as mensagens parecem-me iguais em MQExplorer.

Embora tenha notado uma coluna de formato, onde as mensagens que estão a ser processadas como cadeias têm o valor {[[2]} e a mensagem a ser processada como Byte [] não tem nada lá dentro. Pode estar relacionado? Em caso afirmativo, alguma ideia de como definir o "formato" da mensagem?

Alguém sabe o que determina o tipo de conteúdo de carga útil de uma mensagem, assim posso recriar o problema, pelo menos?

Author: JoshMc, 2013-01-16

2 answers

Já encontrei este tipo de situação antes. A parte externa pode não estar usando JMS, mas pode estar usando as classes MQI ou Websphere MQ para Java. Isto significa que pode estar a receber as mensagens como mensagens de bytem.

Este artigo explica a conversão de mensagens MQ em mensagens JMS.

Gostaria de falar com o partido externo e perguntar-lhes como estão a enviar as suas mensagens. Eles podem ter que lhe dar detalhes das propriedades MQMD que eles são configuracao. Talvez tenhas de os recuperar no teu MessageListener.
 4
Author: Jose Chavez, 2013-01-16 17:51:23

No lado nativo do remetente de mensagens mq, defina o Mqmd ["formato"] = 'Mqstr' irá certificar-se de que a mensagem é enviada no formato jms_ text, caso contrário, por omissão, está no formato bytes.

Tenho-o a trabalhar em Python2.7 com Pymqi.
 0
Author: Roy learns to code, 2017-03-29 00:41:58