jmsTemplate.sendAndReceive("Queue2", session -> {
TextMessage msg = session.createTextMessage();
msg.setText(message);
msg.setJMSReplyTo(config.getReplyQ()); //Not updated but auto generated queue updated
msg.setJMSCorrelationID("asd_123584_lkj"); //Updated in Destination Queue
msg.setJMSType("MQSTR");
System.out.println("Message : "+msg);
return msg;
});
public Destination getReplyQ() throws JMSException {
MQQueue replyToQ = new MQQueue(queueManager, replyQueue);
Destination replyTo = (Destination) replyToQ;
return replyTo;
}
Я прочитал некоторые статьи, в которых говорится, что использование JMS будет обновлять RFH, но не MQMD, и эта очередь ответов является частью MQMD, и я не нашел подходящего класса для обновления заголовка MQMD и отправки сообщения в MQ и обновления ответа. стоять в очереди.
jmsTemplate.send(config.getQ(), session -> {
TextMessage msg = session.createTextMessage();
msg.setText(message);
msg.setJMSReplyTo(config.getReplyQ());
msg.setJMSCorrelationID("asd_123584_lkj");
System.out.println("Message : " + msg);
return msg;
});
Вышеупомянутый метод установит JMSReplyTo.
А для игнорирования заголовка RFH2 можно использовать setTargetClient (WMQConstants.WMQ_CLIENT_NONJMS_MQ), как показано ниже:
public Destination getQ() throws JMSException {
MQQueue replyToQ = new MQQueue(queueManager, queues);
replyToQ.setTargetClient(WMQConstants.WMQ_CLIENT_NONJMS_MQ);
Destination rt = (Destination) replyToQ;
return rt;
}
Вы проверяли/записывали, что возвращает
config.getReplyQ()
?