在使用serverless-offline-sqs时,需要先确保安装了aws-sdk和serverless-offline插件。然后,要手动创建一个本地的SQS队列,并在serverless.yml文件中配置它。最后,在代码中调用sendMessage时,需要指定正确的队列URL。
下面是一个示例serverless.yml文件:
service: my-service
provider:
name: aws
runtime: nodejs12.x
stage: dev
region: us-east-1
plugins:
- serverless-offline
- serverless-queue-manager
custom:
queueManager:
queues:
local:
name: local-queue # 本地队列名称
region: us-east-1 # 可选,可以使用本地区域的相应 AWS 区域
provider: aws
endpoint: http://localhost:4566 # 本地 SQS 端点
functions:
sendMessage:
handler: handler.sendMessage
queue:
name: local-queue
operation: send # 用于发送消息
batchSize: 1 # 批量处理的数量
然后,在代码中可以使用如下方式发送消息到本地队列:
const AWS = require('aws-sdk');
const sqs = new AWS.SQS({
apiVersion: '2012-11-05',
region: 'us-east-1',
endpoint: 'http://localhost:4566' // 本地 SQS 端点
});
exports.sendMessage = async (event, context) => {
const params = {
MessageBody: 'Hello from serverless!',
QueueUrl: 'http://localhost:4566/000000000000/local-queue' // 本地队列 URL
};
const result = await sqs.sendMessage(params).promise();
console.log(result);
};