【问题标题】:Websphere MQ JMSTemplate setting ReplyToWebsphere MQ JMSTemplate 设置ReplyTo
【发布时间】:2015-07-02 22:31:32
【问题描述】:

我正在尝试向 WebSphere MQ 发送带有 replyTo 属性的消息。

@SpringBootApplication
public class WmqSenderApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext ctx = SpringApplication.run(WmqSenderApplication.class, args);
        JmsTemplate jmsTemplate = ctx.getBean(JmsTemplate.class);
        jmsTemplate.send("TEST_QUEUE",new MessageCreator() {

            @Override
            public Message createMessage(Session session) throws JMSException {
                TextMessage message = session.createTextMessage();
                message.setJMSReplyTo(new MQDestination("REPLY_QUEUE"));//com.ibm.mq.jms.MQDestination
                return message;
            }
        });

    }

    @Bean
    public MQQueueConnectionFactory connFac() throws JMSException {
        MQQueueConnectionFactory cf = new MQQueueConnectionFactory();
        cf.setTransportType(1);
        cf.setHostName("localhost");
        cf.setPort(1417);
        cf.setQueueManager("TEST");
        cf.setChannel("CHANNEL");
        return cf;
    }
    @Bean
    public JmsTemplate jmsTemplate() throws JMSException {
        return new JmsTemplate(connFac());
    }
}

但我得到了:

com.ibm.msg.client.jms.DetailedInvalidDestinationException: 
JMSCMQ0005: The destination name '://REPLY_QUEUE' was not valid. The destination name specified does not conform to published destination syntax. Correct the specified destination name and try again.

我在代理中创建了 REPLY_QUEUETEST_QUEUE

【问题讨论】:

    标签: java spring jms ibm-mq


    【解决方案1】:

    setJMSReplyTo 方法采用javax.jms.Destination 类型的对象。您将需要创建一个javax.jms.Destination 类的实例。您可以创建临时队列或永久队列。

         Destination replyToQ = session.createQueue("REPLYQ");
         TextMessage message = session.createTextMessage();
         message.setJMSReplyTo(replyToQ);
         return message;
    

    【讨论】:

      【解决方案2】:

      设法做到了:

      jmsTemplate.send("TEST_QUEUE",new MessageCreator() {
      
                  @Override
                  public Message createMessage(Session session) throws JMSException {
                      TextMessage message = session.createTextMessage();
                      Queue queue = session.createQueue("REPLY_QUEUE");
                      message.setJMSReplyTo(queue);
                      return message;
                  }
              });
      

      【讨论】:

      • 哦!好的。无论如何,请参阅下面的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      • 1970-01-01
      • 2013-03-31
      • 2023-03-16
      • 2013-01-03
      • 1970-01-01
      • 2011-11-15
      相关资源
      最近更新 更多