azureservicebus - 订阅队列一段时间
问题描述
我正在使用 .Net Core 2.1,并且我有一个使用 MessageReceiver 订阅队列的 Web Api 项目。
我想要的是让这个订户保持“活着” x 分钟。现在我必须承认,我实际上认为超时实际上是这样工作的,但我不认为是这样。这是我到目前为止所拥有的
var reciever = new MessageReceiver(connectionString, queueName);
Message message = await reciever.ReceiveAsync(TimeSpan.FromMinutes(2));
if (message != null)
{
// process
}
所以这就是我所期望的,在这段代码运行时进入队列的任何消息都将被处理。
我所看到的是,它似乎要等待超时到期,然后才能从队列中“读取”消息。也许我误解了订阅者应该如何工作,但我想要订阅者在超时时间内订阅队列。
任何帮助,将不胜感激。
解决方案
ReceiveAsync(waitTime)
是一次性接收,直到满足以下条件之一:
- 有消息要接收
waitTime
已过
如果您想将接收操作绑定到某个时间段,您可以在您感兴趣的持续时间内使用循环/消息泵来接收消息。或者,您可以注册一个消息处理程序,以便不构建您自己的消息泵。第二个选项的缺点是要停止接收,您需要关闭接收客户端。在第一个选项中,您不需要关闭它,因此可以保持连接。
潜在的解决方案关闭连接将使用ServiceBusConnection
而不是连接字符串来装箱您的客户端。这样,当客户端关闭时,连接仍然保持活动状态。
推荐阅读
- python - 如何在带有 python 内核的谷歌 colab 笔记本上有效地使用 R keras(以及其他在其背景中使用 python 的 R 包)?
- javascript - 如何在 NodeJs 中为我的脚本动态创建时间间隔
- java - 如何从 Apache Lucene 8 中的搜索结果中删除重复项
- sas - 在 PROC SQL 中将表连接在一起
- javascript - 打字稿滚动位置
- android - React Native Android Build Failure - 配置项目':expo-image-loader'.java.lang.IllegalArgumentException时出现问题(无错误消息)
- python - 使用 Sphinx 记录 Django 项目
- javascript - 在 ReactJs 中自动上下滚动表格
- mongodb - Java - 使用 MongoDB 集合 bulkWrite 插入/更新
- terraform - Terraform 模块来源:目标最新版本和 GitHub 中的特定文件