JMSTemplate receive():如果为空,则立即返回

时间:2019-03-14 17:30:39

标签: java jms

我正在使用JMSTemplate.receive(String destName)方法接收来自队列的消息。 我面临的问题是,当队列为空时,该方法将无限期等待。 为此,我添加了一个超时参数,但是此超时会增加延迟,这是不可取的。

Q1。如果队列为空,我该怎么办才能立即返回。

Q2。假设我添加一个1ms的超时值,如果我的消息很大并且获取时间超过1ms,这会引起问题。

1 个答案:

答案 0 :(得分:1)

A1。使用JMS API调用receiveNoWait()

A2。根据我对JMS规范的理解,超时是客户端开始接收消息的时间。不是receive()返回所需的总时间。因此,我不希望您在1毫秒超时并收到“大”消息时遇到问题。就是说,JMS实现可能在这里有所不同,因此值得肯定地进行测试。