我正在处理一个独立的MQ JMS应用程序,我们的应用程序需要“知道”客户端已经消耗了生产者放在队列上的消息。因为客户端应用程序不是我们负责的。所以我们不能让他们在他们的一侧写入类似“msg.acknowledge();”的东西(在我的情况下,msg.acknowledge()不是正确的方法)。我在stackoverflow中搜索历史答案。发现以下内容与我想要的相当接近:https://stackoverflow.com/questions/6521117/how-to-guarantee-delivery-of-the-message-in-jms和Do the JMS spec or the various implementations support delivery confirmation of messages?。
我的问题是,在MQ API或JMS API中是否有其他方法可以实现这一点?我只需要在消息生成方面进行编码,它可以是队列或主题。
另一个问题是,在JMS中,确认模式CLIENT_ACKNOWLEDGE是否无关紧要?我一直认为这种模式可以阻止应用程序调用send()方法,直到客户端消耗消息并调用msg.acknowledge(),但似乎并非如此。生产者仅在传递消息后退出应用程序,并且消息仅存储在队列中,直到客户端调用acknowledge()。是否可能让生成者应用程序挂起等待客户端确认消息?
如果我的概念不正确,请纠正我,谢谢。
我的问题是,在MQ API或JMS API中是否有其他方法可以实现这一点?我只需要在消息生成方面进行编码,它可以是队列或主题。
另一个问题是,在JMS中,确认模式CLIENT_ACKNOWLEDGE是否无关紧要?我一直认为这种模式可以阻止应用程序调用send()方法,直到客户端消耗消息并调用msg.acknowledge(),但似乎并非如此。生产者仅在传递消息后退出应用程序,并且消息仅存储在队列中,直到客户端调用acknowledge()。是否可能让生成者应用程序挂起等待客户端确认消息?
如果我的概念不正确,请纠正我,谢谢。