Während der Implementierung des Abrufprozesses von SQS ist ein Ereignis aufgetreten, bei dem ** dieselbe Nachricht ** gleichzeitig empfangen wurde **.
Der Erklärungscode ist Python, es wird jedoch angenommen, dass das Ereignis in anderen Sprachen / SDKs auftritt.
Unten finden Sie den Python-Code, der bis zu 10 Nachrichten aus der SQS-Warteschlange abruft.
Es wird angenommen, dass nur eine Nachricht in der Zielwarteschlange gespeichert ist.
import boto3
#Anfrage an SQS senden
client = boto3.client('sqs')
messages = client.receive_messages(QueueUrl=my-url, MaxNumberOfMessages=10).get('Messages')
Zeigen Sie die empfangene Nachricht an.
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*********
Mit diesem Gefühl bekam ich ** Nachrichten-ID und 3 Artikel mit genau dem gleichen Körper **. Die Anzahl der gleichzeitig zu erfassenden Fälle kann ein oder zwei betragen.
Tritt auf, wenn ** Visibility Timeout ** in den Warteschlangeneinstellungen auf 0 gesetzt ist. Dies wurde behoben, indem es auf einen geeigneten Wert größer als 0 geändert wurde.
SQS ist ein verwalteter Nachrichtenwarteschlangendienst, der Nachrichtendaten hinter den Kulissen verteilt, um die Verfügbarkeit zu erhöhen. Wenn dieses Sichtbarkeitszeitlimit deaktiviert ist, haben wahrscheinlich alle SQS-Server auf die Abfrageanforderung geantwortet.
Da es sich um eine einfache Konfiguration handelte, bei der die Skalierung nicht besonders berücksichtigt wurde, wurde sie entsprechend als "** Ja! Diese Option ist ungültig! **" festgelegt. .. ..
Gehen Sie hier zu [Warteschlangenbetrieb]> [Warteschlangeneinstellungen] ↓ ( )
Sie können eine Anfrage mit Optionen senden, aber ich denke, es ist sicherer, die Einstellungen für die gesamte Warteschlange zu ändern.
Beispiel für ein Python SDK (boto3)
#Anfrage an SQS senden
client = boto3.client('sqs')
messages = client.receive_messages(QueueUrl=my-url, VisibilityTimeout=30)