java - JMSTemplate receive() : 如果为空则立即返回
问题描述
我正在使用 JMSTemplate.receive(String destName) 方法从队列接收消息。我面临的问题是当队列为空时该方法将无限等待。为此我添加了一个超时参数,但是这个超时会增加延迟,这是不可取的。
Q1。如果队列为空,我该怎么做才能接收立即返回。
Q2。假设如果我添加 1 毫秒的超时值,如果我的消息很大并且获取时间超过 1 毫秒,这是否会导致问题。
解决方案
A1。使用 JMS API 调用receiveNoWait()
。
A2。根据我对 JMS 规范的理解,超时是客户端开始接收消息。receive()
这不是返回所需的总时间。因此,我不希望您遇到 1 毫秒超时和接收“大”消息的问题。也就是说,这里的 JMS 实现可能会有所不同,因此值得进行测试以确定。
推荐阅读
- css - Webkit-scrollbar 在 Firefox wordpress 上不起作用
- node.js - DISCORD JS BOT - TypeError [CLIENT_MISSING_INTENTS]:必须为客户端提供有效的意图
- python - Spotify语音助手属性错误__enter__
- typescript - 我可以询问在 Typescript(和字符串联合类型)中使用(或不使用)枚举的任何哲学原因吗
- php - 如何在 codeigniter 博客文章页面中获取上一篇和下一篇文章
- node.js - 如何编排我的 3 个 Nodejs 服务器以与共享的 MongoDB 模型一起工作
- flutter - 颤振 | XD 扑关键问题!键key,值为null
- gnu-make - GNU make:在 shell 内无法访问 jenkins 管道的 WithEnv 变量
- c# - 如何在我的条目不为空的情况下初始化我的数组?
- r - 尽管安装了所有 rlang 并更新了 ggplot2 和 tidyverse,为什么会出现 loadNamespace 错误?