当我在Java中失去与TIBCO JMS的连接时,如何检索当前消息?

时间:2020-01-31 12:01:45

标签: java jms tibco-ems

我在使用Java的JMS Tibco使用者时遇到问题。

队列管理是由另一家公司执行的,他们不想自己进行更改。

我必须逐一阅读消息,以便稍后在另一项服务中对其进行处理。通常,我可以毫无问题地阅读消息,但是如果我断开连接并重新连接,那么正在阅读的消息就会消失,并且不再可用。以下未读取的下一条消息将在15分钟后返回队列,但不会返回当前队列。

我使用此功能进行阅读。

if (isConnected) {
    try {

        message = msgConsumer.receiveNoWait();
        //message=msgConsumer.receive();

        if (message != null) {
            TextMessage txtMessage = (TextMessage) message;
            out.SetProperty("message", txtMessage.getText());
            out.SetProperty("read", true);
        } else {
            out.SetProperty("read", false);
        }

    } catch (JMSException e) {
        connection.close();
        errorMessage = e.getMessage();
        errorCode = "666";
        throw new JMSException(e.getMessage());
    }
}

我正在使用:

  • javax.jms.*;
  • com.tibco.tibjms.TibjmsConnectionFactory;

例如,原始队列消息是:

<message>1<message>
<message>2<message>
<message>3<message>
<message>4<message>
<message>5<message>

,当我阅读第2条消息时,我在2秒钟内失去了连接。 我阅读的下一条消息是4和5,然后15分钟后可以阅读3条消息。但是2号丢失了。

0 个答案:

没有答案
相关问题