node.js - 为什么 Azure 事件中心获取事件的速度如此之慢?

标签 node.js azure express azure-eventhub

事件中心发送速度快,但获取速度慢。我使用下一个代码:

    subscribe(cb: (event: any) => Promise<void>) {
        this.consumerClient.subscribe(
            this.config.partitionId,
            {
                processEvents: async (events: any, context: any) => {
                    if (events.length === 0) {
                        return;
                    }

                    for (const event of events) {
                        await cb(event.body);
                    }

                    await context.updateCheckpoint(events[events.length - 1]);
                },

                processError: async (err, context: any) => {
                    console.error(`Event Hub Subscribe Error`, { err, context });
                },
            },
            { startPosition: earliestEventPosition },
        );
    }

获取 100 个事件大约需要 1 分钟。 await cb(event.body); 工作速度很快。

最佳答案

您可以在订阅选项中使用“maxBatchSize”和“maxWaitTimeInSeconds”:

subscribe(cb: (event: any) => Promise<void>) {
    this.consumerClient.subscribe(
        this.config.partitionId,
        {
            processEvents: async (events: any, context: any) => {
                if (events.length === 0) {
                    return;
                }

                for (const event of events) {
                    await cb(event.body);
                }

                await context.updateCheckpoint(events[events.length - 1]);
            },

            processError: async (err, context: any) => {
                console.error(`Event Hub Subscribe Error`, { err, context });
            },
        },
        { 
             startPosition: earliestEventPosition,
             maxBatchSize: 50,
             maxWaitTimeInSeconds: 1
        }
    );
}

关于node.js - 为什么 Azure 事件中心获取事件的速度如此之慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72130753/

相关文章:

javascript - Mongoose 架构 : Forcing an array of objects to be created

node.js - nodejs gmail 失败先决条件

php - 简单的广告服务器

php - 将主题上传到 Azure 上的 WordPress 时出错

node.js - Express 中间件中的 req.locals vs. res.locals vs. res.data vs. req.data vs. app.locals

javascript - 如何在同一台服务器上处理 tcp/ip 原始请求和 http 请求

node.js - 使用 NodeJS 验证 Azure AD B2C 中 JWT 的签名

azure - Azure ML 和 Azure ML 实验之间的区别

azure - 逻辑应用中的嵌套 foreach 循环不应用并发控制设置

javascript - 为什么在 Node js 中到处使用异步函数是最佳实践