Pobieranie komunikatów
Operacja Get Messages
pobiera jeden lub więcej komunikatów z przodu kolejki.
Żądanie
Żądanie Get Messages
może być skonstruowane w następujący sposób. Zalecamy korzystanie z protokołu HTTPS. Zastąp ciąg myaccount nazwą konta magazynu i zastąp myqueue
ciąg nazwą kolejki:
Metoda | Identyfikator URI żądania | Wersja PROTOKOŁU HTTP |
---|---|---|
GET |
https://myaccount.queue.core.windows.net/myqueue/messages |
HTTP/1.1 |
Żądanie usługi magazynu emulowanego
Gdy wysyłasz żądanie względem emulowanej usługi magazynu, określ nazwę hosta emulatora i port usługi Azure Queue Storage jako 127.0.0.1:10001
, a następnie nazwę emulowanego konta magazynu:
Metoda | Identyfikator URI żądania | Wersja PROTOKOŁU HTTP |
---|---|---|
GET |
http://127.0.0.1:10001/devstoreaccount1/myqueue/messages |
HTTP/1.1 |
Aby uzyskać więcej informacji, zobacz Use the Azurite emulator for local Azure Storage development (Używanie emulatora Azurite do lokalnego programowania w usłudze Azure Storage).
Parametry identyfikatora URI
Dla identyfikatora URI żądania można określić następujące dodatkowe parametry.
Parametr | Opis |
---|---|
numofmessages |
Opcjonalny. Niezerowa wartość całkowita określająca liczbę komunikatów do pobrania z kolejki, maksymalnie 32. Jeśli jest widoczna mniejsza liczba komunikatów, zwracane są widoczne komunikaty. Domyślnie pojedynczy komunikat jest pobierany z kolejki przy użyciu tej operacji. |
visibilitytimeout |
Opcjonalny. Określa nową wartość limitu czasu widoczności w sekundach względem czasu serwera. Wartość domyślna to 30 sekund. Określona wartość musi być większa lub równa 1 sekundy i nie może być większa niż 7 dni lub większa niż 2 godziny w wersjach protokołu REST, które są wcześniejsze niż 2011-08-18. Limit czasu widoczności komunikatu można ustawić na wartość późniejszą niż czas wygaśnięcia. |
timeout |
Opcjonalny. Parametr jest wyrażony timeout w sekundach. Aby uzyskać więcej informacji, zobacz Ustawianie limitów czasu dla operacji usługi Azure Queue Storage. |
Nagłówki żądań
W poniższej tabeli opisano wymagane i opcjonalne nagłówki żądań.
Nagłówek żądania | Opis |
---|---|
Authorization |
Wymagane. Określa schemat autoryzacji, nazwę konta i podpis. Aby uzyskać więcej informacji, zobacz Autoryzowanie żądań do usługi Azure Storage. |
Date lub x-ms-date |
Wymagane. Określa dla żądania godzinę w formacie uniwersalnego czasu koordynowanego (UTC). Aby uzyskać więcej informacji, zobacz Autoryzowanie żądań do usługi Azure Storage. |
x-ms-version |
Opcjonalny. Określa wersję operacji do użycia dla tego żądania. Aby uzyskać więcej informacji, zobacz Przechowywanie wersji dla usług Azure Storage. |
x-ms-client-request-id |
Opcjonalny. Zapewnia nieprzezroczystą wartość wygenerowaną przez klienta z limitem znaków 1-kibibyte (KiB) rejestrowanym w dziennikach podczas konfigurowania rejestrowania. Zdecydowanie zalecamy używanie tego nagłówka do korelowania działań po stronie klienta z żądaniami odbieranymi przez serwer. Aby uzyskać więcej informacji, zobacz Monitorowanie usługi Azure Queue Storage. |
Treść żądania
Brak.
Reakcja
Odpowiedź zawiera kod stanu HTTP i zestaw nagłówków odpowiedzi.
Kod stanu
Pomyślna operacja zwraca kod stanu 200 (OK).
Aby uzyskać więcej informacji na temat kodów stanu, zobacz Kody stanu i błędów.
Nagłówki odpowiedzi
Odpowiedź na tę operację zawiera następujące nagłówki. Odpowiedź może również zawierać dodatkowe standardowe nagłówki HTTP. Wszystkie standardowe nagłówki są zgodne ze specyfikacją protokołu HTTP/1.1.
Nagłówek odpowiedzi | Opis |
---|---|
x-ms-request-id |
Unikatowo identyfikuje wykonane żądanie i może służyć do rozwiązywania problemów z żądaniem. Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów z operacjami interfejsu API. |
x-ms-version |
Wskazuje wersję usługi Azure Queue Storage użytą do wykonania żądania. Ten nagłówek jest zwracany w przypadku żądań wysyłanych w wersji 2009-09-19 lub nowszej. |
Date |
Wartość daty/godziny UTC wygenerowana przez usługę, która wskazuje godzinę zainicjowania odpowiedzi. |
x-ms-client-request-id |
Może służyć do rozwiązywania problemów z żądaniami i odpowiadającymi odpowiedziami. Wartość tego nagłówka jest równa wartości x-ms-client-request-id nagłówka, jeśli jest obecna w żądaniu, a wartość zawiera nie więcej niż 1024 widoczne znaki ASCII.
x-ms-client-request-id Jeśli nagłówek nie znajduje się w żądaniu, nie będzie on obecny w odpowiedzi. |
Treść odpowiedzi
Kod XML odpowiedzi dla Get Messages
operacji jest zwracany w następującym formacie.
Element MessageID
jest wartością identyfikatora GUID, która identyfikuje komunikat w kolejce. Ta wartość jest przypisywana do komunikatu przez usługę Azure Queue Storage i jest nieprzezroczysta dla klienta. Możesz użyć wartości wraz z wartością PopReceipt
elementu, aby usunąć komunikat z kolejki po pobraniu go przy użyciu Get Messages
operacji . Wartość PopReceipt
jest również nieprzezroczysta dla klienta. Jego jedynym celem jest upewnienie się, że komunikat można usunąć za pomocą operacji Usuń komunikat .
InsertionTime
Elementy , ExpirationTime
i TimeNextVisible
są reprezentowane jako wartości UTC i sformatowane zgodnie z opisem w dokumentach RFC 1123.
Element DequeueCount
ma wartość 1 przy pierwszym dequeued komunikatu. Ta wartość jest zwiększana za każdym razem, gdy komunikat zostanie odsunięty w kolejce.
Uwaga
Element DequeueCount
jest zwracany w treści odpowiedzi tylko wtedy, gdy kolejka została utworzona przy użyciu usługi Azure Queue Storage w wersji 2009-09-19.
<QueueMessagesList>
<QueueMessage>
<MessageId>string-message-id</MessageId>
<InsertionTime>insertion-time</InsertionTime>
<ExpirationTime>expiration-time</ExpirationTime>
<PopReceipt>opaque-string-receipt-data</PopReceipt>
<TimeNextVisible>time-next-visible</TimeNextVisible>
<DequeueCount>integer</DequeueCount>
<MessageText>message-body</MessageText>
</QueueMessage>
</QueueMessagesList>
Przykładowa odpowiedź
Response Status:
HTTP/1.1 200 OK
Response Headers:
Transfer-Encoding: chunked
Content-Type: application/xml
Date: Fri, 16 Sep 2011 21:04:30 GMT
Server: Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0
Response Body:
<?xml version="1.0" encoding="utf-8"?>
<QueueMessagesList>
<QueueMessage>
<MessageId>5974b586-0df3-4e2d-ad0c-18e3892bfca2</MessageId>
<InsertionTime>Fri, 09 Oct 2009 21:04:30 GMT</InsertionTime>
<ExpirationTime>Fri, 16 Oct 2009 21:04:30 GMT</ExpirationTime>
<PopReceipt>YzQ4Yzg1MDItYTc0Ny00OWNjLTkxYTUtZGM0MDFiZDAwYzEw</PopReceipt>
<TimeNextVisible>Fri, 09 Oct 2009 23:29:20 GMT</TimeNextVisible>
<DequeueCount>1</DequeueCount>
<MessageText>PHRlc3Q+dGhpcyBpcyBhIHRlc3QgbWVzc2FnZTwvdGVzdD4=</MessageText>
</QueueMessage>
</QueueMessagesList>
Autoryzacja
Tę operację może wykonać właściciel konta i każdy, kto ma sygnaturę dostępu współdzielonego, która ma uprawnienia do wykonania tej operacji.
Uwagi
Zawartość komunikatu jest pobierana w formacie, który został użyty do operacji Put Message .
Po pobraniu komunikatu z kolejki odpowiedź zawiera komunikat i wartość potwierdzenia wyskakującego, która jest wymagana do usunięcia komunikatu. Komunikat nie jest automatycznie usuwany z kolejki, ale po jego pobraniu nie jest widoczny dla innych klientów dla interwału czasu określonego visibilitytimeout
przez parametr .
Jeśli zostanie pobranych wiele wiadomości, każda wiadomość ma skojarzone potwierdzenie wyskakujące. Maksymalna liczba komunikatów, które mogą być pobierane w tym samym czasie, wynosi 32.
Klient, który pobiera komunikat, powinien usunąć komunikat po jego przetworzeniu i przed upływem czasu określonego przez TimeNextVisible
element odpowiedzi, który jest obliczany na podstawie wartości parametru visibilitytimeout
. Wartość elementu visibilitytimeout
jest dodawana do czasu pobrania komunikatu w celu określenia wartości TimeNextVisible
.
Ze względu na niesymetryczność zegara komunikat pobrany z określonym visibilitytimeout
czasem może pojawić się ponownie przed upływem określonego limitu czasu. Należy pamiętać, że klient może wywnioskować, że komunikat został już odsunięty od kolejki przez innego klienta na podstawie potwierdzenia podręcznego, który jest unikatowy dla każdego usuwania komunikatu z kolejki. Jeśli potwierdzenie podręczne klienta nie działa już w celu usunięcia lub zaktualizowania komunikatu, a klient otrzyma błąd 404 (Nie znaleziono), komunikat został usunięty z kolejki przez innego klienta.
Zazwyczaj gdy użytkownik pobiera komunikat za pośrednictwem Get Messages
elementu , ten komunikat jest zarezerwowany do usunięcia do momentu wygaśnięcia interwału czasu widoczności . Ale to zachowanie nie jest gwarantowane. Po wygaśnięciu interwału widoczności komunikat ponownie stanie się widoczny dla innych użytkowników. Jeśli wiadomość nie zostanie później pobrana i usunięta przez innego konsumenta, oryginalny odbiorca może usunąć wiadomość przy użyciu oryginalnego potwierdzenia podręcznego.
Gdy komunikat zostanie pobrany po raz pierwszy, jego DequeueCount
właściwość jest ustawiona na 1. Jeśli nie zostanie usunięty, a następnie zostanie on pobrany ponownie, DequeueCount
właściwość jest zwiększana. Klient może użyć tej wartości, aby określić, ile razy został pobrany komunikat.
Jeśli parametr visibilitytimeout lub numofmessages jest poza zakresem, usługa zwraca kod stanu 400 (nieprawidłowe żądanie) wraz z dodatkowymi informacjami o błędzie, jak pokazano w poniższym przykładzie.
HTTP/1.1 400 One of the query parameters specified in the request URI is outside the permissible range.
Connection: Keep-Alive
Content-Length: 455
Via: 1.1 TK5-PRXY-22
Date: Wed, 02 May 2012 19:37:23 GMT
Content-Type: application/xml
Server: Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 6a03526c-ca2c-4358-a63a-b5d096988533
x-ms-version: 2011-08-18
<?xml version="1.0" encoding="utf-8"?>
<Error>
<Code>OutOfRangeQueryParameterValue</Code>
<Message>One of the query parameters specified in the request URI is outside the permissible range.
RequestId:6a03526c-ca2c-4358-a63a-b5d096988533
Time:2012-05-02T19:37:24.2438463Z
</Message>
<QueryParameterName>numofmessages</QueryParameterName>
<QueryParameterValue>0</QueryParameterValue>
<MinimumAllowed>1</MinimumAllowed>
<MaximumAllowed>32</MaximumAllowed>
</Error>
Zobacz też
Kody błędów usługi Azure Queue Storage
Autoryzowanie żądań do usługi Azure Storage
Kody stanu i błędów