JMSTemplate receive() : Return 如果为空则立即
JMSTemplate receive() : Return Immediately if empty
我正在使用 JMSTemplate.receive(String destName) 方法从队列接收消息。
我面临的问题是当队列为空时,该方法将无限等待。
为此我添加了一个超时参数,但是这个超时会增加延迟,这是不可取的。
Q1。如果队列为空,我该怎么做才能立即接收到 return。
Q2。假设如果我添加 1 毫秒的超时值,如果我的消息很大并且获取时间超过 1 毫秒,这会导致问题吗?
A1。使用 JMS API 调用 receiveNoWait()
.
A2。根据我对JMS规范的理解,超时时间是客户端开始接收消息。不是 receive()
到 return 所需的总时间。因此,我不希望您遇到 1 毫秒超时和收到 "large" 消息的问题。也就是说,这里的 JMS 实现可能有所不同,因此值得进行测试以确保安全。
我正在使用 JMSTemplate.receive(String destName) 方法从队列接收消息。 我面临的问题是当队列为空时,该方法将无限等待。 为此我添加了一个超时参数,但是这个超时会增加延迟,这是不可取的。
Q1。如果队列为空,我该怎么做才能立即接收到 return。
Q2。假设如果我添加 1 毫秒的超时值,如果我的消息很大并且获取时间超过 1 毫秒,这会导致问题吗?
A1。使用 JMS API 调用 receiveNoWait()
.
A2。根据我对JMS规范的理解,超时时间是客户端开始接收消息。不是 receive()
到 return 所需的总时间。因此,我不希望您遇到 1 毫秒超时和收到 "large" 消息的问题。也就是说,这里的 JMS 实现可能有所不同,因此值得进行测试以确保安全。