【问题标题】:How to check that we have read all messages from MQ如何检查我们是否已从 MQ 读取所有消息
【发布时间】:2015-06-06 10:00:14
【问题描述】:

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

}

【问题讨论】:

    标签: java jms ibm-mq jmstemplate


    【解决方案1】:

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

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

    【讨论】:

    • 我可以检查 null 但它会获取多长时间?
    • 直到浏览完队列中的最后一条消息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多