【发布时间】:2020-03-05 06:36:56
【问题描述】:
从 Azure 服务总线持续接收消息的正确方法是什么?我通过无限轮询队列来执行以下操作。
const receiver = queueClient.createReceiver(ReceiveMode.peekLock);
while (true) {
const maxMessageCount = 1;
try {
if (!receiver.isReceivingMessages()) {
const message = await receiver.receiveMessages(maxMessageCount);
if (message.length > 0) {
/**
* Note: we are always receiving one message per call
*/
processMessage(message[0]);
}
}
} catch (err) {
processError(err);
}
}
但我遇到了一个非常奇怪的情况。一段时间后,一半的消息丢失了,上面的接收者只收到了一半。我想知道发生了什么。这段代码有什么错误吗?我通常启动 nodejs 脚本并使用 ctrl+c 停止它。即使我停止了 nodejs 脚本,是否有可能在后台运行某些守护程序侦听器并使用上述逻辑?
注意:我总是启动单个 nodejs 脚本。
【问题讨论】:
-
我开始回答@sean,自从我们从 rest api 升级到本机节点库后,我面临着类似的奇怪情况......然后对 TTL 和 . .. 一些发件人在没有通知的情况下添加了它。
标签: node.js azure queue azure-servicebus-queues