我有一個 AWS SQS 佇列,它接收訊息,遍歷它們列印詳細資訊,然后嘗試洗掉它們。不幸的是,即使我得到了成功的回應,他們也沒有洗掉。當我確定我以前使用過類似的代碼時,我無法弄清楚為什么它們沒有被洗掉。
我正在嘗試的基本示例是這樣的:
import boto3
# Create SQS client
sqs = boto3.client('sqs',
region_name='',
aws_access_key_id='',
aws_secret_access_key=''
)
queue_url = ''
# Receive message from SQS queue
response = sqs.receive_message(
QueueUrl=queue_url,
AttributeNames=[
'All'
],
MaxNumberOfMessages=10,
MessageAttributeNames=[
'All'
],
VisibilityTimeout=0,
WaitTimeSeconds=0
)
print(len(response['Messages']))
for index, message in enumerate(response['Messages']):
print("Index Number: ", index)
print(message)
receipt_handle = message['ReceiptHandle']
# do some function
sqs.delete_message(
QueueUrl=queue_url,
ReceiptHandle=receipt_handle
)
uj5u.com熱心網友回復:
可能是因為您正在使用VisibilityTimeout=0. 這意味著訊息會立即回傳到 SQS 佇列。所以沒有什么可以為你洗掉的。
uj5u.com熱心網友回復:
您正在設定VisibilityTimeout=0和WaitTimeSeconds=0- 訊息將超時并在零秒后再次可見。
這可能不是您想要的 - 您應該在此處嘗試使用更高的值并閱讀有關它們的檔案:https : //docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html
您可以超時通常的處理時間并將值設定為安全值,以便在出現錯誤時傳遞訊息。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/319055.html
標籤:Python 亚马逊网络服务 boto3 亚马逊-sqs
