O JMSMessageID deve mudar entre publicar e assinar?

A especificação JMS 2.0 diz

oJMSMessageID O campo do cabeçalho contém um valor que identifica exclusivamente cada mensagem enviada por um provedor.

...e...

O escopo exato da exclusividade é definido pelo provedor. Deve abranger pelo menos todas as mensagens para uma instalação específica de um provedor em que uma instalação seja um conjunto de roteadores de mensagens conectados.

A especificação não declara explicitamente que oJMSMessageID retornado da chamada da API de publicação deve corresponder ao presente na mensagem quando é consumido. A discussão na especificação sobre como mover oJMSMessageID aoJMSCorrelationID ao responder a uma solicitação implica que os dois seriam os mesmos. Se o ID da mensagem fosse alterado entre publicação e consumo, esse estilo de solicitação / resposta falharia.

Certamente, no modelo de domínio unificado do JMS 1.1 e agora 2.0, não faria sentido para o comportamento doJMSMessageID mudar dependendo se o destino é uma fila ou um tópico. Sob o modelo unificado, seria de esperar que todos os destinos agissem da mesma maneira nesse sentido.

Além disso, se "provedor", conforme usado no primeiro parágrafo, se referir ao que está enviando mensagens, uma publicação que espalhou para 10 mensagens idênticas, com idênticasJMSMessageID valores, atenderia à especificação, pois a exclusividade é medida no lado de envio.

Infelizmente, a especificação alterna livremente entre usar o termo "provedor" para descrever a coisa que está enviando mensagens e usá-lo para descrever o fornecedor do transporte JMS. Isso é evidente nas duas passagens citadas acima. Essa ambiguidade não ajuda em nada.

Pelo menos uma implementação (MQ da IBM) adota a abordagem de que uma publicação distribuída em 10 mensagens criou 10 novas e exclusivas e, portanto, cada uma delas possui um únicoJMSMessageID valor. Isso é consistentemente consistente com a segunda passagem citada, que requer exclusividade no escopo do provedor, em que "provedor" parece se referir à implementação do fornecedor enão a coisa que está enviando mensagens.

É minha convicção que, quando uma mensagem publicada se espalhar para vários assinantes, o comportamento correto seria que oJMSMessageID seria preservado em cada instância da mensagem para que as respostas possam ser correlacionadas conforme o esperado. Em outras palavras, acredito que a implementação da IBM não seja compatível. Como a especificação é ambígua sobre o assunto, estou procurando uma fonte autorizada que declare diretamente ou implique fortemente o comportamento pretendido pela especificação, de uma maneira ou de outra. Dependendo da resposta, vou me afastar ou, então, levantar o problema com a IBM como um defeito de conformidade.

questionAnswers(2)

yourAnswerToTheQuestion