重要前提
安装AI Skills的关键前提是:必须科学上网,且开启TUN模式,这一点至关重要,直接决定安装能否顺利完成,在此郑重提醒三遍:科学上网,科学上网,科学上网。查看完整安装教程 →
sqs by itsmostafa/aws-agent-skills
npx skills add https://github.com/itsmostafa/aws-agent-skills --skill sqsAmazon Simple Queue Service (SQS) 是一项完全托管的队列服务,用于解耦和扩展微服务、分布式系统以及无服务器应用程序。
| 类型 | 描述 | 使用场景 |
|---|---|---|
| 标准队列 | 至少一次投递,尽力而为的排序 | 高吞吐量 |
| FIFO 队列 | 恰好一次投递,严格排序 | 顺序敏感型处理 |
| 设置项 | 描述 | 默认值 |
|---|---|---|
| 可见性超时 | 消息被接收后隐藏的时间 | 30 秒 |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| 消息保留时长 |
| 4 天(最长 14 天) |
| 延迟秒数 | 消息变为可用前的延迟时间 | 0 |
| 最大消息大小 | 消息最大尺寸 | 256 KB |
用于存放经过 maxReceiveCount 次尝试后仍处理失败的消息的队列。
AWS CLI:
aws sqs create-queue \
--queue-name my-queue \
--attributes '{
"VisibilityTimeout": "60",
"MessageRetentionPeriod": "604800",
"ReceiveMessageWaitTimeSeconds": "20"
}'
boto3:
import boto3
sqs = boto3.client('sqs')
response = sqs.create_queue(
QueueName='my-queue',
Attributes={
'VisibilityTimeout': '60',
'MessageRetentionPeriod': '604800',
'ReceiveMessageWaitTimeSeconds': '20' # 长轮询
}
)
queue_url = response['QueueUrl']
aws sqs create-queue \
--queue-name my-queue.fifo \
--attributes '{
"FifoQueue": "true",
"ContentBasedDeduplication": "true"
}'
# 创建死信队列
aws sqs create-queue --queue-name my-queue-dlq
# 获取死信队列 ARN
DLQ_ARN=$(aws sqs get-queue-attributes \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789012/my-queue-dlq \
--attribute-names QueueArn \
--query 'Attributes.QueueArn' --output text)
# 在主队列上设置重驱动策略
aws sqs set-queue-attributes \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789012/my-queue \
--attributes "{
\"RedrivePolicy\": \"{\\\"deadLetterTargetArn\\\":\\\"${DLQ_ARN}\\\",\\\"maxReceiveCount\\\":\\\"3\\\"}\"
}"
import boto3
import json
sqs = boto3.client('sqs')
queue_url = 'https://sqs.us-east-1.amazonaws.com/123456789012/my-queue'
# 发送单条消息
sqs.send_message(
QueueUrl=queue_url,
MessageBody=json.dumps({'order_id': '12345', 'action': 'process'}),
MessageAttributes={
'MessageType': {
'DataType': 'String',
'StringValue': 'Order'
}
}
)
# 发送到 FIFO 队列
sqs.send_message(
QueueUrl='https://sqs.us-east-1.amazonaws.com/123456789012/my-queue.fifo',
MessageBody=json.dumps({'order_id': '12345'}),
MessageGroupId='order-12345',
MessageDeduplicationId='unique-id-12345'
)
# 批量发送(最多 10 条消息)
sqs.send_message_batch(
QueueUrl=queue_url,
Entries=[
{'Id': '1', 'MessageBody': json.dumps({'id': 1})},
{'Id': '2', 'MessageBody': json.dumps({'id': 2})},
{'Id': '3', 'MessageBody': json.dumps({'id': 3})}
]
)
import boto3
import json
sqs = boto3.client('sqs')
queue_url = 'https://sqs.us-east-1.amazonaws.com/123456789012/my-queue'
while True:
# 长轮询(最多等待 20 秒)
response = sqs.receive_message(
QueueUrl=queue_url,
MaxNumberOfMessages=10,
WaitTimeSeconds=20,
MessageAttributeNames=['All'],
AttributeNames=['All']
)
messages = response.get('Messages', [])
for message in messages:
try:
body = json.loads(message['Body'])
print(f"Processing: {body}")
# 处理消息...
# 成功处理后删除
sqs.delete_message(
QueueUrl=queue_url,
ReceiptHandle=message['ReceiptHandle']
)
except Exception as e:
print(f"Error processing message: {e}")
# 消息将在可见性超时后重新变为可见
# 创建事件源映射
aws lambda create-event-source-mapping \
--function-name my-function \
--event-source-arn arn:aws:sqs:us-east-1:123456789012:my-queue \
--batch-size 10 \
--maximum-batching-window-in-seconds 5
Lambda 处理函数:
def handler(event, context):
for record in event['Records']:
body = json.loads(record['body'])
message_id = record['messageId']
try:
process_message(body)
except Exception as e:
# 抛出异常以使消息返回队列
raise
return {'batchItemFailures': []}
| 命令 | 描述 |
|---|---|
aws sqs create-queue | 创建队列 |
aws sqs delete-queue | 删除队列 |
aws sqs list-queues | 列出队列 |
aws sqs get-queue-url | 按名称获取队列 URL |
aws sqs get-queue-attributes | 获取队列设置 |
aws sqs set-queue-attributes | 更新队列设置 |
| 命令 | 描述 |
|---|---|
aws sqs send-message | 发送单条消息 |
aws sqs send-message-batch | 发送最多 10 条消息 |
aws sqs receive-message | 接收消息 |
aws sqs delete-message | 删除消息 |
aws sqs delete-message-batch | 删除最多 10 条消息 |
aws sqs purge-queue | 删除所有消息 |
| 命令 | 描述 |
|---|---|
aws sqs change-message-visibility | 更改超时时间 |
aws sqs change-message-visibility-batch | 批量更改 |
WaitTimeSeconds=20) 以减少 API 调用maxReceiveCount(通常为 3-5)原因:
DelaySeconds)调试:
# 检查队列属性
aws sqs get-queue-attributes \
--queue-url $QUEUE_URL \
--attribute-names All
# 检查近似消息计数
aws sqs get-queue-attributes \
--queue-url $QUEUE_URL \
--attribute-names \
ApproximateNumberOfMessages,\
ApproximateNumberOfMessagesNotVisible,\
ApproximateNumberOfMessagesDelayed
原因:
从死信队列重驱动消息:
# 在源队列上启用重驱动允许策略
aws sqs set-queue-attributes \
--queue-url $MAIN_QUEUE_URL \
--attributes '{"RedriveAllowPolicy": "{\"redrivePermission\":\"allowAll\"}"}'
# 开始重驱动
aws sqs start-message-move-task \
--source-arn arn:aws:sqs:us-east-1:123456789012:my-queue-dlq \
--destination-arn arn:aws:sqs:us-east-1:123456789012:my-queue
解决方案:
# 检查事件源映射
aws lambda list-event-source-mappings \
--function-name my-function
# 检查错误
aws lambda get-event-source-mapping \
--uuid <mapping-uuid>
每周安装量
62
代码仓库
GitHub 星标数
1.0K
首次出现
2026 年 1 月 22 日
安全审计
安装于
codex53
opencode51
gemini-cli50
cursor46
claude-code45
github-copilot42
Amazon Simple Queue Service (SQS) is a fully managed message queuing service for decoupling and scaling microservices, distributed systems, and serverless applications.
| Type | Description | Use Case |
|---|---|---|
| Standard | At-least-once, best-effort ordering | High throughput |
| FIFO | Exactly-once, strict ordering | Order-sensitive processing |
| Setting | Description | Default |
|---|---|---|
| Visibility Timeout | Time message is hidden after receive | 30 seconds |
| Message Retention | How long messages are kept | 4 days (max 14) |
| Delay Seconds | Delay before message is available | 0 |
| Max Message Size | Maximum message size | 256 KB |
Queue for messages that failed processing after maxReceiveCount attempts.
AWS CLI:
aws sqs create-queue \
--queue-name my-queue \
--attributes '{
"VisibilityTimeout": "60",
"MessageRetentionPeriod": "604800",
"ReceiveMessageWaitTimeSeconds": "20"
}'
boto3:
import boto3
sqs = boto3.client('sqs')
response = sqs.create_queue(
QueueName='my-queue',
Attributes={
'VisibilityTimeout': '60',
'MessageRetentionPeriod': '604800',
'ReceiveMessageWaitTimeSeconds': '20' # Long polling
}
)
queue_url = response['QueueUrl']
aws sqs create-queue \
--queue-name my-queue.fifo \
--attributes '{
"FifoQueue": "true",
"ContentBasedDeduplication": "true"
}'
# Create DLQ
aws sqs create-queue --queue-name my-queue-dlq
# Get DLQ ARN
DLQ_ARN=$(aws sqs get-queue-attributes \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789012/my-queue-dlq \
--attribute-names QueueArn \
--query 'Attributes.QueueArn' --output text)
# Set redrive policy on main queue
aws sqs set-queue-attributes \
--queue-url https://sqs.us-east-1.amazonaws.com/123456789012/my-queue \
--attributes "{
\"RedrivePolicy\": \"{\\\"deadLetterTargetArn\\\":\\\"${DLQ_ARN}\\\",\\\"maxReceiveCount\\\":\\\"3\\\"}\"
}"
import boto3
import json
sqs = boto3.client('sqs')
queue_url = 'https://sqs.us-east-1.amazonaws.com/123456789012/my-queue'
# Send single message
sqs.send_message(
QueueUrl=queue_url,
MessageBody=json.dumps({'order_id': '12345', 'action': 'process'}),
MessageAttributes={
'MessageType': {
'DataType': 'String',
'StringValue': 'Order'
}
}
)
# Send to FIFO queue
sqs.send_message(
QueueUrl='https://sqs.us-east-1.amazonaws.com/123456789012/my-queue.fifo',
MessageBody=json.dumps({'order_id': '12345'}),
MessageGroupId='order-12345',
MessageDeduplicationId='unique-id-12345'
)
# Batch send (up to 10 messages)
sqs.send_message_batch(
QueueUrl=queue_url,
Entries=[
{'Id': '1', 'MessageBody': json.dumps({'id': 1})},
{'Id': '2', 'MessageBody': json.dumps({'id': 2})},
{'Id': '3', 'MessageBody': json.dumps({'id': 3})}
]
)
import boto3
import json
sqs = boto3.client('sqs')
queue_url = 'https://sqs.us-east-1.amazonaws.com/123456789012/my-queue'
while True:
# Long polling (wait up to 20 seconds)
response = sqs.receive_message(
QueueUrl=queue_url,
MaxNumberOfMessages=10,
WaitTimeSeconds=20,
MessageAttributeNames=['All'],
AttributeNames=['All']
)
messages = response.get('Messages', [])
for message in messages:
try:
body = json.loads(message['Body'])
print(f"Processing: {body}")
# Process message...
# Delete on success
sqs.delete_message(
QueueUrl=queue_url,
ReceiptHandle=message['ReceiptHandle']
)
except Exception as e:
print(f"Error processing message: {e}")
# Message will become visible again after visibility timeout
# Create event source mapping
aws lambda create-event-source-mapping \
--function-name my-function \
--event-source-arn arn:aws:sqs:us-east-1:123456789012:my-queue \
--batch-size 10 \
--maximum-batching-window-in-seconds 5
Lambda handler:
def handler(event, context):
for record in event['Records']:
body = json.loads(record['body'])
message_id = record['messageId']
try:
process_message(body)
except Exception as e:
# Raise to put message back in queue
raise
return {'batchItemFailures': []}
| Command | Description |
|---|---|
aws sqs create-queue | Create queue |
aws sqs delete-queue | Delete queue |
aws sqs list-queues | List queues |
aws sqs get-queue-url | Get queue URL by name |
aws sqs get-queue-attributes | Get queue settings |
aws sqs set-queue-attributes |
| Command | Description |
|---|---|
aws sqs send-message | Send single message |
aws sqs send-message-batch | Send up to 10 messages |
aws sqs receive-message | Receive messages |
aws sqs delete-message | Delete message |
aws sqs delete-message-batch | Delete up to 10 messages |
aws sqs purge-queue |
| Command | Description |
|---|---|
aws sqs change-message-visibility | Change timeout |
aws sqs change-message-visibility-batch | Batch change |
Causes:
Debug:
# Check queue attributes
aws sqs get-queue-attributes \
--queue-url $QUEUE_URL \
--attribute-names All
# Check approximate message counts
aws sqs get-queue-attributes \
--queue-url $QUEUE_URL \
--attribute-names \
ApproximateNumberOfMessages,\
ApproximateNumberOfMessagesNotVisible,\
ApproximateNumberOfMessagesDelayed
Causes:
Redrive from DLQ:
# Enable redrive allow policy on source queue
aws sqs set-queue-attributes \
--queue-url $MAIN_QUEUE_URL \
--attributes '{"RedriveAllowPolicy": "{\"redrivePermission\":\"allowAll\"}"}'
# Start redrive
aws sqs start-message-move-task \
--source-arn arn:aws:sqs:us-east-1:123456789012:my-queue-dlq \
--destination-arn arn:aws:sqs:us-east-1:123456789012:my-queue
Solutions:
# Check event source mapping
aws lambda list-event-source-mappings \
--function-name my-function
# Check for errors
aws lambda get-event-source-mapping \
--uuid <mapping-uuid>
Weekly Installs
62
Repository
GitHub Stars
1.0K
First Seen
Jan 22, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
codex53
opencode51
gemini-cli50
cursor46
claude-code45
github-copilot42
Supabase Postgres 最佳实践指南 - 8大类别性能优化规则与SQL示例
81,400 周安装
| Update queue settings |
| Delete all messages |