我正在使用JMSTemplate.receive(String destName)方法接收来自队列的消息。 我面临的问题是,当队列为空时,该方法将无限期等待。 为此,我添加了一个超时参数,但是此超时会增加延迟,这是不可取的。
Q1。如果队列为空,我该怎么办才能立即返回。
Q2。假设我添加一个1ms的超时值,如果我的消息很大并且获取时间超过1ms,这会引起问题。
答案 0 :(得分:1)
A1。使用JMS API调用receiveNoWait()
。
A2。根据我对JMS规范的理解,超时是客户端开始接收消息的时间。不是receive()
返回所需的总时间。因此,我不希望您在1毫秒超时并收到“大”消息时遇到问题。就是说,JMS实现可能在这里有所不同,因此值得肯定地进行测试。