我正在使用 @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/