我正在处理一个独立的 MQ JMS 应用程序,我们的应用程序需要“意识到”客户端已经使用了放在队列中的消息生产者。因为客户端应用程序不由我们负责。所以我们不能让他们写像“msg.acknowledge();”这样的东西 他们这边的事情(msg.acknowledge() 在我的情况下不是正确的方法。)。我在stackoverflow中搜索历史答案。发现以下与我想要的完全一样:
https://stackoverflow.com/questions/6521117/how-to-guarantee-delivery-of-the-message-in-jms
我的问题是,还有其他方法可以在 MQ API 或 JMS API 中存档吗?我只需要在味精生产端进行编码,它可以是队列或主题。
另一个问题是 JMS 中的确认模式 CLIENT_ACKNOWLEDGE,是否产生无关紧要?我一直相信这种模式可以在调用 send() 方法时阻塞应用程序,直到客户端消费消息并调用 msg.acknowledge(),但似乎不是这样。产品在消息传递后退出应用程序,消息仅存储在队列中,直到客户端调用确认()。是否可以让生产者应用程序挂在那里等到客户端确认消息?
如果我的概念不正确,请纠正我,谢谢。