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

Porada

Wypróbuj program Microsoft Azure Storage Explorer

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.

Omówienie

W tym przewodniku przedstawiono sposób wykonywania typowych scenariuszy przy użyciu usługi Microsoft Azure Queue Storage. Przykłady zostały napisane 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órej można uzyskać dostęp z dowolnego miejsca na świecie za pośrednictwem uwierzytelnionego połączenia za pomocą protokołu HTTP lub HTTPS. Pojedynczy komunikat z kolejki nie może przekraczać 64 KB, a kolejka może zawierać miliony komunikatów — maksymalnie liczbę nieprzekraczającą całkowitego limitu 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 zawiera następujące składniki:

Składniki usługi Azure Queue Service

  • Konto magazynu: cały dostęp do usługi Azure Storage odbywa się przez konto magazynu. Aby uzyskać więcej informacji na temat kont magazynu, zobacz Omówienie konta magazynu.

  • Kolejka: kolejka zawiera zestaw komunikatów. Wszystkie komunikaty 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 temacie Naming Queues and Metadata (Nazewnictwo kolejek i metadanych).

  • 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 wygaśnie. 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://<storage account>.queue.core.windows.net/<queue>

    Następujący adres URL dotyczy kolejki w schemacie:

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

Tworzenie konta usługi Azure Storage

Najprościej jest utworzyć pierwsze konto usługi Azure Storage przy użyciu witryny Azure Portal. Więcej informacji można znaleźć w temacie Tworzenie konta magazynu.

Można również utworzyć konto usługi Azure Storage przy użyciu programu Azure PowerShell, interfejsu wiersza polecenia Azure lub 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, aby uruchomić i przetestować kod 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 w języku Ruby

Tworzenie aplikacji języka Ruby. Aby uzyskać instrukcje, zobacz Tworzenie aplikacji języka Ruby w App Service dla systemu Linux.

Konfigurowanie aplikacji w celu uzyskiwania dostępu do magazynu

Aby korzystać z usługi Azure Storage, musisz pobrać pakiet platformy Azure Ruby i korzystać z niego, który zawiera zestaw bibliotek wygodnych komunikujących się z usługami REST magazynu.

Używanie narzędzia RubyGems do pobierania pakietu

  1. Użyj interfejsu wiersza polecenia, takiego jak PowerShell (system Windows), Terminal (system Mac) lub Bash (system Unix).
  2. Wpisz gem install azure polecenie w oknie polecenia, aby zainstalować klejnot i zależności.

Importowanie pakietu

Użyj ulubionego edytora tekstów, dodaj następujący kod w górnej części pliku Ruby, w którym zamierzasz używać magazynu:

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, musisz określić informacje o koncie przed użyciem za pomocą Azure::QueueService następującego kodu:

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 menedżera zasobów w witrynie Azure Portal:

  1. Zaloguj się do Azure Portal.
  2. Przejdź do konta magazynu, 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ć jednego z nich.
  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ść

Komunikat można podejrzeć przed kolejką bez usuwania jej z kolejki, wywołując metodę peek_messages() . Domyślnie peek_messages() podejrzyje do pojedynczego komunikatu. Możesz również określić liczbę komunikatów, które mają być podejrzyć.

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

Instrukcje: dequeue następnej wiadomości

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

  1. Podczas wywoływania 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ć. Zwrócone komunikaty stają list_messages() się niewidoczne dla każdego innego kodu odczytujące 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 może przetworzyć komunikatu z powodu awarii sprzętu lub oprogramowania, inne wystąpienie kodu może uzyskać ten sam komunikat i spróbować ponownie. Kod wywołuje kod delete_message() bezpośrednio po przetworzeniu komunikatu.

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

Instrukcje: zmienianie zawartości komunikatu w kolejce

Możesz zmienić zawartość komunikatu w kolejce. Poniższy kod używa update_message() metody w celu zaktualizowania komunikatu. Metoda zwróci krotkę zawierającą wyskakujące potwierdzenie komunikatu kolejki i wartość UTC DateTime reprezentującą, gdy 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

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

  1. Możesz uzyskać partię komunikatów.
  2. Możesz ustawić dłuższy lub krótszy limit czasu widoczności, dzięki czemu kod może w pełni przetworzyć każdy komunikat.

W poniższym przykładzie kodu użyto list_messages() metody w celu 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

Instrukcje: uzyskiwanie długości 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")

Instrukcje: usuwanie kolejki

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

azure_queue_service.delete_queue("test-queue")

Następne kroki

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

Porównanie usługi Azure Queue Storage omówionego w tym artykule i kolejkach Azure Service Bus omówionych w temacie How to use Service Bus queues (Jak używać kolejek usługi Service Bus), zobacz Kolejki usługi Azure Queue Storage i kolejki usługi Service Bus — porównanie i kontrastowanie