繁体   English   中英

将消息类型作为请求时,回复队列未在 IBM MQ 中更新

[英]Reply-To Queue is not updating in IBM MQ while putting message type as request

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;
    }

IBM MQ 消息

我读了一些文章说使用 JMS 会更新 RFH 但不会更新 MQMD 并且这个 Reply-To Queue 是 MQMD 的一部分,我没有找到正确的 class 来更新 MQMD header 并将消息发送到 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。

这里存在 sendAndReceive 的定义,它指出“临时队列是作为此操作的一部分创建的,并在消息的 JMSReplyTO header 中设置”

并忽略 RFH2 headersetTargetClient(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;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM