0

需要您帮助更新以下代码,目前此代码从 IBM MQ 获取第一个 msg,但我的要求是获取直到 MQ 为空

    private JmsTemplate jmsTemplate;

public JmsTemplate getJmsTemplate() {
    return jmsTemplate;
}

@Autowired
public void setJmsTemplate(JmsTemplate jmsTemplate) {
    this.jmsTemplate = jmsTemplate;
}

public String onMessage() throws JMSException, IOException {        

    Message source = jmsTemplate.receive("LQ.SCCO4313");

    BytesMessage bm = (BytesMessage) source;

    byte[] byteArr = new byte[(int) bm.getBodyLength()];
    bm.readBytes(byteArr); 

    String msg = new String(byteArr, "UTF-8");  

    logger.info("Message " + msg);
    logger.info("MESSAGE received from myMessageQueue ");
    return msg;

}
4

1 回答 1

0

如果队列中没有消息,JMS MessageConsumer 的receive()receiveNoWait()将返回 null。如果有任何内部错误,就会出现异常。

所以你可以source == null在你的代码中检查。

于 2015-04-02T02:17:17.963 回答