Udostępnij przez


Jak używać usługi Queue Storage z poziomu języka Ruby

Wskazówka

Wypróbuj eksploratora usługi Microsoft Azure Storage

Microsoft Azure Storage Explorer jest bezpłatną aplikacją autonomiczną oferowaną przez firmę Microsoft, która umożliwia wizualną pracę z danymi w usłudze Azure Storage w systemach Windows, macOS i Linux.

Przegląd

W tym przewodniku przedstawiono sposób wykonywania typowych scenariuszy przy użyciu usługi Microsoft Azure Queue Storage. Przykłady są pisane przy użyciu interfejsu API platformy Azure w języku Ruby. Omówione scenariusze obejmują wstawianie, wyświetlanie, pobieranie i usuwanie komunikatów w kolejce, a także tworzenie i usuwanie kolejek.

Co to jest usługa Queue Storage?

Azure Queue Storage to usługa do przechowywania dużej liczby komunikatów, do których można uzyskiwać dostęp z dowolnego miejsca na świecie za pośrednictwem uwierzytelnionych wywołań przy użyciu protokołu HTTP lub HTTPS. Pojedynczy komunikat w kolejce może mieć rozmiar do 64 KB, a kolejka może zawierać miliony komunikatów, aż do osiągnięcia całkowitej pojemności konta magazynu. Usługa Queue Storage jest często używana do tworzenia listy prac w celu asynchronicznego przetwarzania.

Pojęcia dotyczące usługi kolejkowania

Usługa Azure Queue Service zawiera następujące składniki:

Komponenty usługi Azure Queue Service

  • #B0 Konto magazynowe: #C1 Wszelki dostęp do usługi Azure Storage odbywa się za pośrednictwem konta magazynowego. Aby uzyskać więcej informacji na temat kont magazynu, zobacz Omówienie konta magazynu.

  • Kolejka: kolejka zawiera zestaw komunikatów. Wszystkie wiadomości muszą być w kolejce. Pamiętaj, że nazwa kolejki może zawierać tylko małe litery. Informacje dotyczące nazewnictwa kolejek można znaleźć w sekcji Naming Queues and Metadata.

  • Komunikat: komunikat w dowolnym formacie, o maksymalnym rozmiarze 64 KB. Maksymalny czas pozostawania komunikatu w kolejce wynosi 7 dni. W przypadku wersji 2017-07-29 lub nowszej maksymalny czas wygaśnięcia może być dowolną liczbą dodatnią lub -1 wskazującą, że komunikat nie wygasa. Jeśli ten parametr zostanie pominięty, domyślny czas wygaśnięcia wynosi siedem dni.

  • Format adresu URL: kolejki są adresowalne przy użyciu następującego formatu adresu URL: http://.queue.core.windows.net/<storage account>

    Następujący adres URL adresuje kolejkę na diagramie:

    http://myaccount.queue.core.windows.net/incoming-orders

Tworzenie konta usługi Azure Storage

Najprostszym sposobem utworzenia pierwszego konta usługi Azure Storage jest użycie witryny Azure Portal. Więcej informacji można znaleźć w temacie Tworzenie konta usług magazynowych.

Konto usługi Azure Storage można również utworzyć przy użyciu programu Azure PowerShell, interfejsu wiersza polecenia platformy Azurelub dostawcy zasobów usługi Azure Storage dla platformy .NET.

Jeśli w tej chwili nie chcesz tworzyć konta magazynu na platformie Azure, możesz również użyć emulatora magazynu Azurite do uruchomienia i przetestowania kodu w środowisku lokalnym. 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).

Tworzenie aplikacji języka Ruby

Tworzenie aplikacji języka Ruby. Aby uzyskać instrukcje, zobacz Tworzenie aplikacji języka Ruby w usłudze App Service w systemie Linux.

Skonfiguruj aplikację, aby uzyskać dostęp do magazynu

Aby korzystać z Azure Storage, musisz pobrać i użyć pakietu Ruby Azure, który zawiera zestaw bibliotek pomocniczych, które komunikują się z usługami REST usługi storage.

Uzyskiwanie pakietu przy użyciu języka RubyGems

  1. Użyj interfejsu wiersza poleceń, takiego jak PowerShell (Windows), Terminal (Mac) lub Bash (powłoka Unix).
  2. Wpisz gem install azure w oknie poleceń, aby zainstalować gem i zależności.

Importowanie pakietu

Użyj swojego ulubionego edytora tekstu, dodaj następujący kod na początku pliku Ruby, w którym zamierzasz używać przechowywania.

require "azure"

Konfigurowanie połączenia usługi Azure Storage

Moduł platformy Azure odczytuje zmienne AZURE_STORAGE_ACCOUNT środowiskowe i AZURE_STORAGE_ACCESS_KEY informacje wymagane do nawiązania połączenia z kontem usługi Azure Storage. Jeśli te zmienne środowiskowe nie są ustawione, przed użyciem Azure::QueueService następującego kodu należy określić informacje o koncie:

Azure.config.storage_account_name = "<your azure storage account>"
Azure.config.storage_access_key = "<your Azure storage access key>"

Aby uzyskać te wartości z klasycznego konta magazynu lub konta magazynu Resource Manager w portalu Azure:

  1. Zaloguj się w witrynie Azure Portal.
  2. Przejdź do konta magazynowego, którego chcesz użyć.
  3. W bloku Ustawienia po prawej stronie kliknij pozycję Klucze dostępu.
  4. W wyświetlonym bloku Klucze dostępu zobaczysz klucz dostępu 1 i klucz dostępu 2. Możesz użyć jednej z tych opcji.
  5. Kliknij ikonę kopiowania, aby skopiować klucz do schowka.

Instrukcje: tworzenie kolejki

Poniższy kod tworzy Azure::QueueService obiekt, który umożliwia pracę z kolejkami.

azure_queue_service = Azure::QueueService.new

create_queue() Użyj metody , aby utworzyć kolejkę o określonej nazwie.

begin
  azure_queue_service.create_queue("test-queue")
rescue
  puts $!
end

Instrukcje: wstawianie komunikatu do kolejki

Aby wstawić komunikat do kolejki, użyj create_message() metody , aby utworzyć nowy komunikat i dodać go do kolejki.

azure_queue_service.create_message("test-queue", "test message")

Instrukcje: Zobacz następną wiadomość

Możesz zajrzeć do wiadomości z przodu kolejki bez jej usuwania z kolejki, wywołując metodę peek_messages(). Domyślnie peek_messages() zagląda do pojedynczego komunikatu. Możesz również określić liczbę komunikatów, które chcesz przejrzeć.

result = azure_queue_service.peek_messages("test-queue",
  {:number_of_messages => 10})

Jak: Wypisać/Usunąć z kolejki następną wiadomość

Komunikat z kolejki można usunąć w dwóch krokach.

  1. Po wywołaniu list_messages()metody domyślnie zostanie wyświetlony następny komunikat w kolejce. Możesz również określić liczbę komunikatów, które chcesz pobrać. Komunikaty zwrócone z list_messages() stają się niewidoczne dla innego kodu odczytującego komunikaty z tej kolejki. Limit czasu widoczności jest przekazywany w sekundach jako parametr.
  2. Aby zakończyć usuwanie komunikatu z kolejki, należy również wywołać metodę delete_message().

Ten dwuetapowy proces usuwania komunikatu zapewnia, że gdy kod nie przetworzy komunikatu z powodu awarii sprzętu lub oprogramowania, inne wystąpienie kodu może uzyskać ten sam komunikat i spróbować ponownie. Twój kod wywołuje delete_message(), bezpośrednio po przetworzeniu wiadomości.

messages = azure_queue_service.list_messages("test-queue", 30)
azure_queue_service.delete_message("test-queue",
  messages[0].id, messages[0].pop_receipt)

Jak: Zmień zawartość wiadomości w kolejce

Zawartość komunikatu można zmienić w kolejce. Poniższy kod używa update_message() metody w celu zaktualizowania komunikatu. Metoda zwróci krotkę zawierającą potwierdzenie odbioru komunikatu kolejki i wartość UTC DateTime, reprezentującą czas, kiedy komunikat będzie widoczny w kolejce.

message = azure_queue_service.list_messages("test-queue", 30)
pop_receipt, time_next_visible = azure_queue_service.update_message(
  "test-queue", message.id, message.pop_receipt, "updated test message",
  30)

Instrukcje: dodatkowe opcje usuwania komunikatów z kolejki

Są dwa sposoby dostosowania pobierania komunikatów z kolejki.

  1. Możesz otrzymać serię wiadomości.
  2. Możesz ustawić dłuższy lub krótszy limit czasu niewidoczności, dzięki czemu kod ma więcej lub mniej czasu na pełne przetworzenie każdego komunikatu.

Poniższy przykład kodu używa metody list_messages() do pobrania 15 komunikatów w jednym wywołaniu. Następnie drukuje i usuwa każdy komunikat. Ustawia również limitu czasu niewidoczności na pięć minut dla każdego komunikatu.

azure_queue_service.list_messages("test-queue", 300
  {:number_of_messages => 15}).each do |m|
  puts m.message_text
  azure_queue_service.delete_message("test-queue", m.id, m.pop_receipt)
end

Jak uzyskać długość kolejki

Możesz uzyskać oszacowanie liczby komunikatów w kolejce. Metoda get_queue_metadata() zwraca przybliżoną liczbę komunikatów i inne metadane kolejki.

message_count, metadata = azure_queue_service.get_queue_metadata(
  "test-queue")

Jak usunąć kolejkę

Aby usunąć kolejkę i wszystkie zawarte w niej komunikaty, wywołaj metodę delete_queue() w obiekcie kolejki.

azure_queue_service.delete_queue("test-queue")

Dalsze kroki

Teraz, gdy znasz już podstawy usługi Queue Storage, skorzystaj z tych linków, aby dowiedzieć się więcej o bardziej skomplikowanych zadaniach związanych z magazynowaniem.

Porównanie usługi Azure Queue Storage omówionego w tym artykule i kolejkach usługi Azure Service Bus omówionych w temacie Jak używać kolejek usługi Service Bus, zobacz Kolejki usługi Azure Queue Storage i Kolejki usługi Service Bus — porównanie i kontrast