如何检查我们是否已从MQ读取所有消息

时间:2015-04-01 16:34:49

标签: java jms ibm-mq jmstemplate

需要您帮助更新以下代码,目前此代码从IBM MQ获取第一个消息,但我的要求是获取,直到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;

}

1 个答案:

答案 0 :(得分:0)

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

因此,您可以在代码中检查source == null