Rohe Nachrichten von Amazon SQS mit Boto lesen

8

Standardmäßig codiert boto Nachrichten mit Base64, bevor die Nachrichten an SQS gesendet werden. Beispielcode:

%Vor%

Indem ich Message () durch RawMessage () ersetze, kann ich unformatierte Nachrichten ohne Verschlüsselung an die Warteschlange senden. Aber wie lese ich Nachrichten aus der Warteschlange ohne Decodierung? Wenn ich den folgenden Code verwende:

%Vor%

m.get_body () gibt das decodierte Ergebnis automatisch zurück. Gibt es eine Möglichkeit, unbearbeitete Nachrichten abzurufen?

Danke!

    
eliang 22.05.2012, 08:56
quelle

3 Antworten

3

Der Konstruktor von boto.sqs.queue.Queue hat ein Argument message_class , das Sie auf RawMessage setzen können. Auf der anderen Seite sehe ich nicht, warum es Sinn machen könnte, diese Daten vor der Übertragung nicht zu kodieren.

    
Jan-Philip Gehrcke 22.05.2012, 09:26
quelle
13

Wenn Sie nur die Nachrichten aus der SQS-Warteschlange lesen möchten und der Produzent jemand anderes war, können Sie beim Aufruf von get_messages () mit einem Müllzeichen rechnen. Siehe Ссылка

Lösung in diesem Fall ist wieder

%Vor%     
kk1957 05.07.2013 22:19
quelle
7

Tatsächlich erbt Message class von RawMessage , also hat es alle Methoden. Eine dieser Methoden ist:

get_body_encoded()

  

Diese Methode ist eine halbprivate Methode, die von Queue.write verwendet wird   Methode, wenn der Inhalt der Nachricht an SQS geschrieben wird. Du wahrscheinlich   sollte diese Methode nicht im normalen Ablauf der Ereignisse aufrufen müssen.

    
vartec 22.05.2012 09:24
quelle