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:
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
- Użyj interfejsu wiersza polecenia, takiego jak PowerShell (system Windows), Terminal (system Mac) lub Bash (system Unix).
- 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:
- Zaloguj się do Azure Portal.
- Przejdź do konta magazynu, którego chcesz użyć.
- W bloku Ustawienia po prawej stronie kliknij pozycję Klucze dostępu.
- W wyświetlonym bloku Klucze dostępu zobaczysz klucz dostępu 1 i klucz dostępu 2. Możesz użyć jednego z nich.
- 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.
- 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. - 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.
- Możesz uzyskać partię komunikatów.
- 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.
- Odwiedź blog zespołu usługi Azure Storage
- Odwiedź repozytorium Azure SDK for Ruby w witrynie GitHub
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