You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多Node.js SQS消费者仅单条消息处理问题排查与解决

问题:多进程SQS消费者仅处理单条消息的原因排查与解决

我有一个存储数千条消息的SQS队列,因使用Puppeteer导致函数体积过大无法在Lambda中消费,故将消费者迁移至EC2实例。作为POC,我基于sqs-consumer库实现了基础消费者,并通过pm2启动多个相同进程,代码实现如下:

import { SQSClient } from '@aws-sdk/client-sqs';
import { Consumer } from 'sqs-consumer';

const sqs = new SQSClient({
  apiVersion: '2012-11-05',
  region: 'us-east-1',
  credentials: {
    accessKeyId: #@@@#
    secretAccessKey: 232131321312
  },
});

const app = Consumer.create({
  queueUrl: EnvsEnum.QUEUE_URL,
  terminateVisibilityTimeout: true,
  waitTimeSeconds: 20,
  handleMessage: async (message) => {
    // ... my handler here doing some work on the message 
  },
  shouldDeleteMessages: true,
  region: 'us-east-1',
  sqs,
});

app.on('error', (err, item) => {
  // ...
});

app.on('processing_error', (err) => {
  // ...
});
console.log('starting app...');
app.start();

我原本期望看到多条消息处于处理中状态,但在SQS控制台始终仅显示1条。请问可能的原因是什么?若我的实现方式有误,是否有合适的消费者实现指南?

更新
我已解决该问题,原因是发送消息时使用了相同的MessageGroupId,修正后消费者可正常并行工作。

内容的提问来源于stack exchange,提问作者mikejackowski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 17:38:26