2015-04-01 95 views
0

所有信息需要更新下面的代码你的帮助,目前该代码从IBM MQ第一味精,但我的要求是获取直到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; 

} 

回答

0

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

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

+0

我可以检查null,但它会获取多长时间? – 2015-04-09 14:03:57

+0

直到浏览队列中的最后一条消息。 – Shashi 2015-04-09 14:24:08