@efebia/sqs-queue-v3 (英语)
AWS SQS 队列消费者基于 @efebia/queue,使用现代模块化 AWS SDK v3(@aws-sdk/client-sqs) (中文(简体) ).
安装
npm install @efebia/sqs-queue-v3
使用量
import { SQSClient } from '@aws-sdk/client-sqs';
import { Queue } from '@efebia/sqs-queue-v3';
type MyMessage = { userId: string; action: string };
const client = new SQSClient({ region: 'eu-west-1' });
const queue = new Queue<MyMessage>({
client,
receiveOptions: {
QueueUrl: 'https://sqs.eu-west-1.amazonaws.com/123456789/my-queue',
WaitTimeSeconds: 20,
MaxNumberOfMessages: 1,
},
sleepTimeout: 5000,
logger: (obj, msg) => console.log(msg, obj),
});
// Start consuming
queue.start(async (name, params, state) => {
console.log(`Received "${name}":`, params);
// set state.del = false to leave the message in the queue
});
// Send a message
await queue.send({ name: 'doWork', params: { userId: '42', action: 'sync' } });
// Stop the loop
queue.stop();
API 密码
new Queue<TMessage>(options)
| 选项 | 类型 | 默认 | 说明 |
|---|---|---|---|
client | SQSClient | —— 说 | 要求. 配置 @aws-sdk/client-sqs 客户端实例 |
receiveOptions | ReceiveMessageCommandInput | —— 说 | 要求. 传到 ReceiveMessageCommand。必须包括 QueueUrl。 。 。 . |
receiveOptions.WaitTimeSeconds | number | 20 | 漫长的等待时间 |
receiveOptions.MaxNumberOfMessages | number | 1 | 每个收件者的最大消息 |
canRead | () => boolean | Promise<boolean> | () => true | 在每次收到之前拨打; 返回 false 跳过迭代 |
logger | (obj, msg?) => void | 无 -op | 错误和警告的日志函数 |
sleepTimeout | number | 5000 | 在重试前等待出错 |
errorCallback | (error) => void | console.error | 调用循环中未发现的错误 |
继承自 @efebia/queue
start(callback, canThrow?)开始投票循环stop()信号循环停止resume(callback)——重新启动已停止的队列isRunning()——返回true如果循环活动send(message)- 发送信息(添加)createdAt自动)
回调签名 :
(name: string, params: TMessage, state: { del: boolean }) => void | Promise<void>
回调解析后,除非 state.del 设置为 false。 。 。 .
许可证
麻省理工学院