首页 > 解决方案 > 当我在 Java 中失去与 TIBCO JMS 的连接时,如何检索当前消息?

问题描述

我在使用 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());
    }
}

我在用着:

例如原始队列消息是:

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

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

标签: javajmstibco-ems

解决方案


推荐阅读