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



需要您的帮助来更新以下代码,目前此代码从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;
}

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

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

最新更新