都
我们有一个同步的 JMS 通信,我们在其中向队列发送请求并等待超时为 400 毫秒的协同响应。如果响应在 400 秒内没有返回,则我们的线程超时,消息将保留在队列中,永远不会被读取。
我们的目标系统需要大量时间来处理消息,响应在 400 毫秒后返回,导致我们的线程超时,响应队列很快就会满。
如何从响应延迟的响应队列中删除此类孤立响应消息?
理论上,在JMS协议中,你可以设置JMSExpiration,这是JMS头属性。如果您使用标准的java-jms,则JmsSender类具有可以使用的“setTimeToLive”方法。
https://jms-spec.java.net/2.0/apidocs/