java - 当我在 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());
}
}
我在用着:
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,然后是 3,我可以在 15 分钟后阅读。但是2号丢失了。
解决方案
推荐阅读
- node.js - 如何在首先需要填充的嵌套对象上使用光标?
- python - formaction 中的插槽验证不起作用
- linux - 使用 Python 通过 Serial 读取不固定数量的字节
- javascript - 在单个文件中为浏览器捆绑 Typescript 3.2.4
- linux - 如何在自定义 linux 上添加启动画面(特别是树莓派)
- ios - 读取 iOS 上文档存储(“将文档和数据存储在”)设置的值
- macos - 如何杀死一个绝对不会死的进程,OSX终端
- php - 如何使用 bitnami/linux 终端为我的 php 应用程序更改 php 版本
- http - sinatra 的 send_file 决定使用什么内容类型的过程是什么?
- r - 在美元符号之前使用减号正确格式化负货币值