我在使用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号丢失了。