Como fazer uma solicitação síncrona do JMS

Eu tenho um webapp que é esperado para buscar e exibir dados de um aplicativo externo que é acessível apenas via mensagens (JMS).

Portanto, se um usuário enviar uma solicitação em um navegador, o mesmo thread de solicitação HTTP terá que interagir com o sistema de Mensagens (MQ Series), de modo que o mesmo thread de solicitação possa exibir os dados recebidos do Sistema de Mensagens.

Existe um padrão que eu possa usar aqui? Eu vi algumas referências vagas na net que usam "Correlation ID" desta forma:

Msg m = new TextMsg("findDataXYZ");
String cr_id = m.setCorrelationID(id);

sendQueue.send(m).

// now start listening to the Queue for a msg that bears that specific cr_id

Response r = receiverQueue.receive(cr_id);

Existe algo melhor lá fora? Os outros padrões que encontrei esperam que a resposta seja recebida de forma assíncrona ... o que não é uma opção para mim, já que tenho que enviar a resposta de volta ao mesmo pedido de HTTP.

questionAnswers(2)

yourAnswerToTheQuestion