gpt4 book ai didi

node.js - 使用 nodejs 在单个请求上解决多个 Azure 服务总线消息

转载 作者:行者123 更新时间:2023-12-03 12:18:26 25 4
gpt4 key购买 nike

我正在使用 @azure/service-bus 从 Azure 服务总线接收消息

使用这样的东西(简化)

let receivingMode = ReceiveMode.peekLock;
let sbClient = ServiceBusClient.createFromConnectionString(connectionString);
let subscriptionClient = this.sbClient.createSubscriptionClient(topicName, subscriptionName);
let receiver = this.subscriptionClient.createReceiver(receivingMode);
let messages = await this.receiver.receiveMessages(maxMessageCount, maxWaitTimeInSeconds);

我可能每次批量收到数百条消息,我看到我只能一条一条地完成(),例如:

for (let index = 0; index < messages.length; index++) {
let message = messages[index];
await message.complete();
}

这似乎是一个非常缓慢的过程......有没有更好的方法?

最佳答案

同时处理您的消息。据我了解,除非您已处理旧消息,否则您不应收到新消息。

const promises = [];
for (let index = 0; index < messages.length; index++) {
let message = messages[index];
promises.push(settleMessage(message));
}
await Promise.all(promises);

async function settleMessage(message) {
// process your message here
// Use other methods (abandon(), deadLetter(), defer()) depending on processing result;
// Otherwise, I suggest to use different receiving mode;
await message.complete();
}

关于node.js - 使用 nodejs 在单个请求上解决多个 Azure 服务总线消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64643484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com