Lors de l'implémentation du processus d'interrogation SQS, j'ai rencontré un événement où ** le même message a été reçu ** en même temps.
Le code d'explication est Python, mais on pense que l'événement se produira dans d'autres langages / SDK.
Vous trouverez ci-dessous le code Python qui récupère jusqu'à 10 messages de la file d'attente SQS.
On suppose qu'un seul message est stocké dans la file d'attente cible.
import boto3
#Envoyer la demande à SQS
client = boto3.client('sqs')
messages = client.receive_messages(QueueUrl=my-url, MaxNumberOfMessages=10).get('Messages')
Affichez le message reçu.
for i, message in enumerate(messages):
print(i)
print('MessageId: ' + message['MessageId'])
print('MD5: ' + message['MD5OfBody'])
# 0
# MessageId: 7d4f2923-****-4d86-87a6-85f20446086a
# MD5: 38d2b0ed81e0200*********
# 1
# MessageId: 7d4f2923-****-4d86-87a6-85f20446086a
# MD5: 38d2b0ed81e0200*********
# 2
# MessageId: 7d4f2923-****-4d86-87a6-85f20446086a
# MD5: 38d2b0ed81e0200*********
Avec ce sentiment, j'ai obtenu ** ID de message et 3 éléments avec exactement le même corps **. Le nombre de cas à acquérir en même temps peut être d'un ou deux.
Se produit lorsque ** Visibility Timeout ** est défini sur 0 dans les paramètres de la file d'attente. Ce problème a été résolu en le modifiant par une valeur appropriée supérieure à 0.
Délai d'expiration de la visibilité Amazon SQS
SQS est un service de mise en file d'attente de messages géré qui maintient les données de message distribuées en arrière-plan pour augmenter la disponibilité. Si ce délai de visibilité est désactivé, il est probable que tous les serveurs SQS aient répondu à la demande d'interrogation.
Comme il s'agissait d'une configuration simple qui ne tenait pas particulièrement compte de l'échelle, elle a été définie de manière appropriée comme "** Ouais! Cette option n'est pas valide! **". .. ..
Allez dans [Fonctionnement de la file d'attente]> [Paramètres de la file d'attente] ↓ Ici ( )
Vous pouvez envoyer une demande avec des options, mais je pense qu'il est plus sûr de modifier les paramètres pour toute la file d'attente.
Exemple de SDK Python (boto3)
#Envoyer la demande à SQS
client = boto3.client('sqs')
messages = client.receive_messages(QueueUrl=my-url, VisibilityTimeout=30)