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