Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten przewodnik szybkiego startu zawiera instrukcje krok po kroku dotyczące prostego scenariusza wysyłania wiadomości do kolejki usługi Service Bus i ich odbierania. W tym przewodniku Szybki start wykonasz następujące zadania:
Utworzenie przestrzeni nazw usługi Service Bus za pomocą usługi Azure Portal.
Utworzenie kolejki usługi Service Bus przy użyciu witryny Azure Portal.
Napisz aplikację JavaScript, aby używać pakietu @azure/service-bus do:
- Wysyłanie zestawu komunikatów do kolejki.
- Odbierz te komunikaty z kolejki.
Wstępnie utworzone przykłady kodu JavaScript i TypeScript dla usługi Azure Service Bus można znaleźć w repozytorium zestawu Azure SDK dla języka JavaScript w witrynie GitHub.
Jeśli dopiero zaczynasz mieć dostęp do usługi, najpierw zapoznaj się z Omówieniem usługi Service Bus.
Wymagania wstępne
Subskrypcja Azure. Aby ukończyć ten przewodnik szybkiego startu, potrzebujesz konta Azure. Możesz aktywować miesięczne środki na korzystanie z platformy Azure dla subskrybentów programu Visual Studio lub utworzyć konto bezpłatne.
Aby użyć tego przewodnika Szybki start z własnym kontem platformy Azure:
- Zainstaluj interfejs wiersza polecenia platformy Azure, który zapewnia uwierzytelnianie bez hasła na maszynie dewelopera.
- Zaloguj się na swoje konto Azure w wierszu polecenia, używając polecenia
az login
. - Użyj tego samego konta podczas dodawania odpowiedniej roli danych do zasobu.
- Uruchom kod w tym samym oknie wiersza polecenia.
- Zapisz nazwę kolejki dla przestrzeni nazw usługi Service Bus. Potrzebujesz tego w kodzie.
Uwaga
Ten samouczek współpracuje z przykładami, które można kopiować i uruchamiać przy użyciu narzędzia Nodejs. Aby uzyskać instrukcje dotyczące tworzenia aplikacji Node.js, zobacz Tworzenie i wdrażanie aplikacji Node.js w witrynie internetowej platformy Azure lub Node.js usługi w chmurze przy użyciu programu Windows PowerShell.
Tworzenie przestrzeni nazw w witrynie Azure Portal
Aby rozpocząć korzystanie z jednostek obsługi komunikatów usługi Service Bus na platformie Azure, utwórz przestrzeń nazw o nazwie unikatowej na platformie Azure. Przestrzeń nazw udostępnia kontener określania zakresu dla zasobów usługi Service Bus, takich jak kolejki i tematy, w aplikacji.
Aby utworzyć przestrzeń nazw:
Zaloguj się w witrynie Azure Portal.
Wybierz menu wysuwane w lewym górnym rogu i przejdź do strony Wszystkie usługi.
Na lewym pasku nawigacyjnym wybierz pozycję Integracja.
Przewiń w dół do pozycji Usługi obsługi komunikatów>Service Bus i wybierz pozycję Utwórz.
Na karcie Podstawowe na stronie Tworzenie przestrzeni nazw wykonaj następujące kroki:
W polu Subskrypcja wybierz subskrypcję platformy Azure, w której ma zostać utworzona przestrzeń nazw.
W obszarze Grupa zasobów wybierz istniejącą grupę zasobów lub utwórz nową.
Wprowadź nazwę przestrzeni nazw , która spełnia następujące konwencje nazewnictwa:
- Nazwa musi być unikatowa na platformie Azure. System od razu sprawdza, czy nazwa jest dostępna.
- Długość nazwy wynosi co najmniej 6 i co najwyżej 50 znaków.
- Nazwa może zawierać tylko litery, cyfry, łączniki
-
. - Nazwa musi zaczynać się literą i kończyć literą lub cyfrą.
- Nazwa nie kończy się ciągiem
-sb
lub-mgmt
.
W obszarze Lokalizacja wybierz region do hostowania przestrzeni nazw.
W obszarze Warstwa cenowa wybierz warstwę cenową (Podstawowa, Standardowa lub Premium) dla przestrzeni nazw. W tym przewodniku Szybki start wybierz pozycję Standardowa.
W przypadku wybrania warstwy Premium możesz włączyć replikację geograficzną dla przestrzeni nazw. Funkcja replikacji geograficznej zapewnia, że metadane i dane przestrzeni nazw są stale replikowane z regionu podstawowego do co najmniej jednego regionu pomocniczego.
Ważne
Jeśli chcesz korzystać z tematów i subskrypcji, wybierz warstwę Standardowa lub Premium. Tematy i subskrypcje nie są obsługiwane w warstwie cenowej Podstawowa.
W przypadku wybrania warstwy cenowej Premium określ liczbę jednostek obsługi komunikatów. Warstwa Premium zapewnia izolację zasobów na poziomie procesora i pamięci, dlatego poszczególne obciążenia są od siebie odizolowane. Ten kontener zasobów jest nazywany jednostką obsługi komunikatów. Przestrzeń nazw w warstwie Premium ma co najmniej jedną jednostkę obsługi komunikatów. Możesz wybrać 1, 2, 4, 8 lub 16 jednostek obsługi komunikatów dla każdej przestrzeni nazw usługi Service Bus Premium. Aby uzyskać więcej informacji, zobacz stronę Warstwa Premium obsługi komunikatów usługi Service Bus.
Wybierz pozycję Przejrzyj i utwórz w dolnej części strony.
Na stronie Przeglądanie + tworzenie przejrzyj ustawienia i wybierz pozycję Utwórz.
Po pomyślnym wdrożeniu zasobu wybierz pozycję Przejdź do zasobu na stronie wdrożenia.
Zostanie wyświetlona strona główna dla przestrzeni nazw usługi Service Bus.
Tworzenie kolejki w witrynie Azure Portal
Na stronie Przestrzeń nazw usługi Service Bus rozwiń węzeł Jednostki w menu nawigacyjnym po lewej stronie i wybierz pozycję Kolejki.
Na stronie Kolejki na pasku narzędzi wybierz pozycję + Kolejka.
Wprowadź nazwę kolejki. Pozostaw pozostałe wartości z ustawieniami domyślnymi.
Wybierz Utwórz.
Uwierzytelnianie aplikacji na platformie Azure
W tym artykule przedstawiono dwa sposoby nawiązywania połączenia z usługą Azure Service Bus: bez hasła i parametry połączenia.
Pierwsza opcja pokazuje, jak używać podmiotu zabezpieczeń w usłudze Microsoft Entra ID i kontroli dostępu opartej na rolach (RBAC) w celu nawiązania połączenia z przestrzenią nazw usługi Service Bus. Nie musisz martwić się o zakodowane parametry połączenia w kodzie, w pliku konfiguracji ani w bezpiecznym magazynie, na przykład w usłudze Azure Key Vault.
Druga opcja pokazuje, jak używać parametry połączenia do nawiązywania połączenia z przestrzenią nazw usługi Service Bus. Jeśli dopiero zaczynasz korzystać z platformy Azure, możesz znaleźć opcję parametry połączenia łatwiejszą do naśladowania. Zalecamy użycie opcji bez hasła w rzeczywistych aplikacjach i środowiskach produkcyjnych. Aby uzyskać więcej informacji, zobacz Uwierzytelnianie i autoryzacja usługi Service Bus. Aby dowiedzieć się więcej na temat uwierzytelniania bez hasła, zobacz Uwierzytelnianie aplikacji platformy .NET.
Przypisywanie ról do użytkownika firmy Microsoft Entra
Podczas tworzenia aplikacji lokalnie upewnij się, że konto użytkownika, które nawiązuje połączenie z usługą Azure Service Bus, ma odpowiednie uprawnienia. Aby wysyłać i odbierać komunikaty, potrzebna jest rola właściciela danych usługi Azure Service Bus . Aby przypisać sobie tę rolę, musisz mieć rolę administratora dostępu użytkowników lub inną rolę obejmującą Microsoft.Authorization/roleAssignments/write
akcję.
Role RBAC platformy Azure można przypisać użytkownikowi przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell. Aby dowiedzieć się więcej o dostępnych zakresach przypisań ról, zobacz Zrozumienie zakresu dla Azure RBAC.
Poniższy przykład przypisuje Azure Service Bus Data Owner
rolę do konta użytkownika, co zapewnia pełny dostęp do zasobów usługi Azure Service Bus. W rzeczywistym scenariuszu postępuj zgodnie z zasadą najniższych uprawnień , aby dać użytkownikom tylko minimalne uprawnienia wymagane do bezpieczniejszego środowiska produkcyjnego.
Wbudowane role platformy Azure dla usługi Azure Service Bus
W przypadku usługi Azure Service Bus zarządzanie przestrzeniami nazw i wszystkimi powiązanymi zasobami za pośrednictwem witryny Azure Portal i interfejsu API zarządzania zasobami platformy Azure jest już chronione przy użyciu modelu RBAC platformy Azure. Platforma Azure udostępnia następujące wbudowane role platformy Azure umożliwiające autoryzowanie dostępu do przestrzeni nazw usługi Service Bus:
- Właściciel danych usługi Azure Service Bus: umożliwia dostęp danych do przestrzeni nazw usługi Service Bus i jej jednostek, w tym kolejek, tematów, subskrypcji i filtrów. Członek tej roli może wysyłać i odbierać komunikaty z kolejek lub tematów/subskrypcji.
-
Nadawca danych usługi Azure Service Bus: użyj tej roli, aby udzielić
send
dostępu do przestrzeni nazw usługi Service Bus i jej jednostek. -
Odbiornik danych usługi Azure Service Bus: użyj tej roli, aby udzielić
receive
dostępu do przestrzeni nazw usługi Service Bus i jej jednostek.
Jeśli chcesz utworzyć rolę niestandardową, zobacz Prawa wymagane dla operacji usługi Service Bus.
Dodawanie użytkownika usługi Microsoft Entra do roli właściciela usługi Azure Service Bus
Dodaj nazwę użytkownika usługi Microsoft Entra do roli właściciela danych usługi Azure Service Bus na poziomie przestrzeni nazw usługi Service Bus. Ta konfiguracja umożliwia aplikacji uruchamianej w kontekście konta użytkownika wysyłanie komunikatów do kolejki lub tematu. Może odbierać komunikaty z kolejki lub subskrypcji danego tematu.
Ważne
W większości przypadków propagacja przypisania roli na platformie Azure zajmuje minutę lub dwie. W rzadkich przypadkach może upłynąć do ośmiu minut. Jeśli podczas pierwszego uruchomienia kodu wystąpią błędy uwierzytelniania, zaczekaj chwilę i spróbuj ponownie.
Jeśli nie masz otwartej strony przestrzeni nazw usługi Service Bus w witrynie Azure Portal, znajdź przestrzeń nazw usługi Service Bus przy użyciu głównego paska wyszukiwania lub nawigacji po lewej stronie.
Na stronie Przegląd wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami) z menu po lewej stronie.
Na stronie Kontrola dostępu (Zarządzanie dostępem i tożsamościami) wybierz kartę Przypisania ról.
Wybierz + Dodaj w górnym menu, a następnie Dodaj przypisanie roli.
Użyj pola wyszukiwania, aby filtrować wyniki do żądanej roli. W tym przykładzie wyszukaj
Azure Service Bus Data Owner
i wybierz pasujący wynik. Następnie wybierz pozycję Dalej.W obszarze Przypisz dostęp do wybierz pozycję Użytkownik, grupa lub jednostka usługi, a następnie wybierz pozycję + Wybierz członków.
W oknie dialogowym wyszukaj nazwę użytkownika firmy Microsoft Entra (zazwyczaj adres e-mail user@domain ), a następnie wybierz pozycję Wybierz w dolnej części okna dialogowego.
Wybierz pozycję Przejrzyj i przypisz , aby przejść do ostatniej strony, a następnie ponownie przejrzyj i przypisz, aby ukończyć proces.
Instalowanie menedżera NPM (Node Package Manager)
Aby zainstalować wymagane pakiety npm dla usługi Service Bus, otwórz okno wiersza polecenia, które ma
npm
w swojej ścieżce i przejdź do katalogu, gdzie chcesz umieścić swoje przykłady.Zainstaluj następujące pakiety:
npm install @azure/service-bus @azure/identity
Wysyłanie komunikatów do kolejki
Poniższy przykładowy kod przedstawia sposób wysyłania komunikatu do kolejki.
Zaloguj się za pomocą polecenia Azure CLI az login
na swojej lokalnej maszynie, aby zapewnić uwierzytelnianie bez hasła wymagane w tym kodzie.
Otwórz edytor tekstów, taki jak Visual Studio Code.
Utwórz plik o nazwie
send.js
i wklej do niego następujący kod. Ten kod wysyła nazwy naukowców jako komunikaty do kolejki.Ważne
Poświadczenie bez hasła jest udostępniane za pomocą DefaultAzureCredential.
const { ServiceBusClient } = require("@azure/service-bus"); const { DefaultAzureCredential } = require("@azure/identity"); // Replace `<SERVICE-BUS-NAMESPACE>` with your namespace const fullyQualifiedNamespace = "<SERVICE-BUS-NAMESPACE>.servicebus.windows.net"; // Passwordless credential const credential = new DefaultAzureCredential(); // name of the queue const queueName = "<QUEUE NAME>" const messages = [ { body: "Albert Einstein" }, { body: "Werner Heisenberg" }, { body: "Marie Curie" }, { body: "Steven Hawking" }, { body: "Isaac Newton" }, { body: "Niels Bohr" }, { body: "Michael Faraday" }, { body: "Galileo Galilei" }, { body: "Johannes Kepler" }, { body: "Nikolaus Kopernikus" } ]; async function main() { // create a Service Bus client using the passwordless authentication to the Service Bus namespace const sbClient = new ServiceBusClient(fullyQualifiedNamespace, credential); // createSender() can also be used to create a sender for a topic. const sender = sbClient.createSender(queueName); try { // Tries to send all messages in a single batch. // Will fail if the messages cannot fit in a batch. // await sender.sendMessages(messages); // create a batch object let batch = await sender.createMessageBatch(); for (let i = 0; i < messages.length; i++) { // for each message in the array // try to add the message to the batch if (!batch.tryAddMessage(messages[i])) { // if it fails to add the message to the current batch // send the current batch as it is full await sender.sendMessages(batch); // then, create a new batch batch = await sender.createMessageBatch(); // now, add the message failed to be added to the previous batch to this batch if (!batch.tryAddMessage(messages[i])) { // if it still can't be added to the batch, the message is probably too big to fit in a batch throw new Error("Message too big to fit in a batch"); } } } // Send the last created batch of messages to the queue await sender.sendMessages(batch); console.log(`Sent a batch of messages to the queue: ${queueName}`); // Close the sender await sender.close(); } finally { await sbClient.close(); } } // call the main function main().catch((err) => { console.log("Error occurred: ", err); process.exit(1); });
Zastąp
<SERVICE-BUS-NAMESPACE>
ciąg swoją przestrzenią nazw usługi Service Bus.Zastąp
<QUEUE NAME>
ciąg nazwą kolejki.Aby uruchomić kod w tym pliku, użyj tego polecenia w wierszu polecenia:
node send.js
Powinny zostać wyświetlone następujące dane wyjściowe.
Sent a batch of messages to the queue: myqueue
Odbieranie komunikatów z kolejki
Zaloguj się za pomocą polecenia Azure CLI az login
na swojej lokalnej maszynie, aby zapewnić uwierzytelnianie bez hasła wymagane w tym kodzie.
Otwórz edytor tekstów, taki jak Visual Studio Code.
Utwórz plik o nazwie
receive.js
i wklej do niego następujący kod.const { delay, ServiceBusClient, ServiceBusMessage } = require("@azure/service-bus"); const { DefaultAzureCredential } = require("@azure/identity"); // Replace `<SERVICE-BUS-NAMESPACE>` with your namespace const fullyQualifiedNamespace = "<SERVICE-BUS-NAMESPACE>.servicebus.windows.net"; // Passwordless credential const credential = new DefaultAzureCredential(); // name of the queue const queueName = "<QUEUE NAME>" async function main() { // create a Service Bus client using the passwordless authentication to the Service Bus namespace const sbClient = new ServiceBusClient(fullyQualifiedNamespace, credential); // createReceiver() can also be used to create a receiver for a subscription. const receiver = sbClient.createReceiver(queueName); // function to handle messages const myMessageHandler = async (messageReceived) => { console.log(`Received message: ${messageReceived.body}`); }; // function to handle any errors const myErrorHandler = async (error) => { console.log(error); }; // subscribe and specify the message and error handlers receiver.subscribe({ processMessage: myMessageHandler, processError: myErrorHandler }); // Waiting long enough before closing the sender to send messages await delay(20000); await receiver.close(); await sbClient.close(); } // call the main function main().catch((err) => { console.log("Error occurred: ", err); process.exit(1); });
Zastąp
<SERVICE-BUS-NAMESPACE>
ciąg swoją przestrzenią nazw usługi Service Bus.Zastąp
<QUEUE NAME>
ciąg nazwą kolejki.Aby uruchomić kod w tym pliku, użyj tego polecenia w wierszu polecenia:
node receive.js
Powinny zostać wyświetlone następujące dane wyjściowe.
Received message: Albert Einstein
Received message: Werner Heisenberg
Received message: Marie Curie
Received message: Steven Hawking
Received message: Isaac Newton
Received message: Niels Bohr
Received message: Michael Faraday
Received message: Galileo Galilei
Received message: Johannes Kepler
Received message: Nikolaus Kopernikus
Na stronie Przegląd przestrzeni nazw usługi Service Bus w witrynie Azure Portal można zobaczyć liczbę komunikatów przychodzących i wychodzących. Może być konieczne poczekanie minuty, a następnie odświeżenie strony w celu wyświetlenia najnowszych wartości.
Wybierz kolejkę na tej stronie Przegląd , aby przejść do strony Kolejka usługi Service Bus. Na tej stronie jest też widoczna liczba przychodzących i wychodzących komunikatów . Zobaczysz również inne informacje, takie jak bieżący rozmiar kolejki, maksymalny rozmiar, liczba aktywnych komunikatów itd.
Rozwiązywanie problemów
Jeśli podczas uruchamiania wersji JavaScript bez hasła wystąpi jeden z następujących błędów, zaloguj się przy użyciu polecenia Azure CLI . Odpowiednia rola jest stosowana do konta użytkownika platformy Azure:
- Do wykonania tej operacji są wymagane oświadczenia "Wyślij"
- Oświadczenia "Odbierz" są wymagane do wykonania tej operacji
Czyszczenie zasobów
Przejdź do przestrzeni nazw usługi Service Bus w witrynie Azure Portal i wybierz pozycję Usuń w witrynie Azure Portal, aby usunąć przestrzeń nazw i kolejkę w niej.
Treści powiązane
Zapoznaj się z następującą dokumentacją i przykładami: