java - 消息消费后出现错误,如何将消息保存在JMS Message Queue中?

标签 java jms message-queue middleware

我的场景是——我将消​​息发布到队列中,一旦消息被使用,我就会将它发送到第三方中间件应用程序。如果该中间件应用程序已关闭,那么我发布的消息就没有用了。如果中间件应用程序关闭,我不想丢失该消息,而是希望它暂停或在队列中等待。请建议如何处理这种情况?

最佳答案

你应该像这样创建 session :

Session session = connection.createSession(false,
                       Session.CLIENT_ACKNOWLEDGE);

当您尝试将消息传递给您的第三方应用时:

  • 如果有效,您应该确认消息。

  • 如果它已关闭,您不应该确认它,这样 JMS 提供程序将能够重新传送它,并且消息不会丢失。 message.acknowledge();

另外,你可以看看这个:JMS AUTO_ACKNOWLEDGE when is it acknowledged?

关于java - 消息消费后出现错误,如何将消息保存在JMS Message Queue中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30266631/

相关文章:

java - IntelliJ 不运行更新的代码并运行以前分支的代码

java - 将 XML 发送到 JMS 时,我应该使用 TextMessage 还是 BytesMessage

message-queue - Rabbitmq 或 Gearman - 选择作业队列

perl - 如何使用 Perl 的 AnyEvent::RabbitMQ 正确断开与 RabbitMQ 的连接?

java - 使用监听器动态添加文本字段

java - 树莓派 "Kiosk"模式

java - 无法运行具有 2 个或更多设置参数的更新操作的命名查询

java - Spring JMS 监听器容器未完全停止

java - Spring 4 升级现在 junit 测试在 "GenericApplicationContext has not been refreshed yet"上失败?

akka - 即时通讯应用的 Actor 模型?