Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk részletes útmutatást nyújt az üzenetek Service Bus-üzenetsorba való küldésének és fogadásának egyszerű forgatókönyvéhez. Az Azure Service Bus előre összeállított JavaScript- és TypeScript-mintáit a GitHub Azure SDK for Python-adattárában találja.
Ebben a gyors kezdő útmutatóban a következőket teheti meg:
Service Bus-névtér létrehozása az Azure Portal használatával.
Service Bus-üzenetsor létrehozása az Azure Portal használatával.
Python-kódot írni az azure-servicebus csomag használatával a következőkre:
- Üzenetkészlet küldése az üzenetsorba.
- Fogadja ezeket az üzeneteket az üzenetsorból.
Ha még nem ismerkedik a szolgáltatással, a kezdés előtt tekintse meg a Service Bus áttekintését .
Előfeltételek
Azure-előfizetés. Egy gyorsútmutató elvégzéséhez Azure-fiókra van szüksége. Aktiválhatja a Havi Azure-krediteket a Visual Studio-előfizetők számára , vagy regisztrálhat egy ingyenes fiókra.
Python 3.8 vagy újabb.
Ha ezt a rövid útmutatót saját Azure-fiókjával szeretné használni:
- Telepítse az Azure CLI-t, amely jelszó nélküli hitelesítést biztosít a fejlesztői gép számára.
- Jelentkezzen be azure-fiókjával a terminálon vagy a parancssorban a következővel
az login: . - Használja ugyanazt a fiókot, amikor hozzáadja a megfelelő adatszerepkört az erőforráshoz.
- Futtassa a kódot ugyanabban a terminálban vagy parancssorban.
- Jegyezze fel a Service Bus-névtér üzenetsornevét . Erre szükség van a kódban.
Ez a rövid útmutató olyan mintákkal működik, amelyeket a Python használatával másolhat és futtathat. A Python-alkalmazások létrehozásával kapcsolatos utasításokért lásd : Rövid útmutató: Python-webalkalmazás üzembe helyezése az Azure App Service-ben. Az ebben a rövid útmutatóban használt csomagok telepítéséről további információt a Pythonhoz készült Azure-kódtárcsomagok telepítése című témakörben talál.
Névtér létrehozása az Azure Portalon
A Service Bus-üzenetkezelési entitások Azure-ban való használatához hozzon létre egy névteret az Azure-ban egyedi névvel. A névtér egy hatókör-tárolót biztosít a Service Bus-erőforrásokhoz, például az üzenetsorokhoz és a témakörökhöz az alkalmazásban.
Névtér létrehozása:
Jelentkezzen be az Azure Portalra.
Válassza ki a bal felső menüt, és lépjen a Minden szolgáltatás lapra.
A bal oldali navigációs sávon válassza az Integráció lehetőséget.
Görgessen le az Üzenetkezelési szolgáltatások>Service Bushoz , és válassza a Létrehozás lehetőséget.
A Névtér létrehozása lap Alapismeretek lapján kövesse az alábbi lépéseket:
Előfizetés esetén válassza ki azt az Azure-előfizetést, amelyben létre szeretné hozni a névteret.
Erőforráscsoport esetén válasszon ki egy meglévő erőforráscsoportot, vagy hozzon létre egy újat.
Adjon meg egy névtérnevet , amely megfelel a következő elnevezési konvencióknak:
- A névnek egyedinek kell lennie az Azure-ban. A rendszer azonnal ellenőrzi, hogy a név elérhető-e.
- A név hossza legalább 6 és legfeljebb 50 karakter lehet.
- A név csak betűket, számokat, kötőjeleket
-tartalmazhat. - A névnek betűvel kell kezdődnie, és betűvel vagy számmal kell végződnie.
- A név nem végződik a következővel
-sb: vagy-mgmt.
A Hely területen válassza ki azt a régiót, amely a névteret üzemelteti.
Tarifacsomag esetén válassza ki a névtérhez tartozó tarifacsomagot (Alapszintű, Standard vagy Prémium). Ebben a rövid útmutatóban válassza a Standard lehetőséget.
Ha a Prémium szintet választja, engedélyezheti a georeplikálást a névtérhez. A georeplikációs funkció biztosítja, hogy a névtér metaadatai és adatai folyamatosan replikálódjanak egy elsődleges régióból egy vagy több másodlagos régióba.
Fontos
Ha témaköröket és előfizetéseket szeretne használni, válassza a Standard vagy a Premium lehetőséget. Az alapszintű tarifacsomag nem támogatja a témaköröket és előfizetéseket.
Ha a Prémium tarifacsomagot választotta, adja meg az üzenetkezelési egységek számát. A prémium szint erőforrás-elkülönítést biztosít a CPU és a memória szintjén, így minden számítási feladat külön fut. Ennek az erőforrás-tárolónak a neve üzenetkezelési egység. A prémium szintű névtér legalább egy üzenetkezelési egységgel rendelkezik. Minden Service Bus Premium-névtérhez választhat 1, 2, 4, 8 vagy 16 üzenetkezelési egységet. További információkért lásd a Service Bus prémium szintű üzenetkezelési szintjét.
Válassza a Véleményezés + létrehozás lehetőséget a lap alján.
A Véleményezés + létrehozás lapon tekintse át a beállításokat, és válassza a Létrehozás lehetőséget.
Miután az erőforrás üzembe helyezése sikeres volt, válassza az Erőforrás megnyitása lehetőséget az üzembe helyezési lapon.
Megjelenik a service bus-névtér kezdőlapja.
Üzenetsor létrehozása az Azure Portalon
A Service Bus Névtér lapján bontsa ki a bal oldali navigációs menü Entitások elemét, és válassza az Üzenetsorok lehetőséget.
Az Üzenetsorok lapon, az eszköztáron válassza a + Üzenetsor lehetőséget.
Adjon meg egy nevet a várósornak. Hagyja meg a többi értéket az alapértelmezett értékekkel.
Válassza a Create gombot.
Az alkalmazás hitelesítése az Azure-ban
Ez a cikk az Azure Service Bushoz való csatlakozás két módját mutatja be: a jelszó nélküli és a kapcsolati sztringet.
Az első lehetőség bemutatja, hogyan használhatja a biztonsági tagot a Microsoft Entra-azonosítóban és a szerepköralapú hozzáférés-vezérlésben (RBAC) a Service Bus-névtérhez való csatlakozáshoz. Nem kell aggódnia amiatt, hogy a kódjában, a konfigurációs fájlban vagy egy biztonságos tárolóban, mint például az Azure Key Vaultban, van egy rögzített kapcsolati karakterlánc.
A második lehetőség bemutatja, hogyan csatlakozhat egy Service Bus-névtérhez egy kapcsolati sztring. Ha még nem ismerkedik az Azure-sal, könnyebben követheti a kapcsolati sztring lehetőséget. A jelszó nélküli beállítást a valós alkalmazásokban és éles környezetekben javasoljuk. További információ: Service Bus-hitelesítés és -engedélyezés. A jelszó nélküli hitelesítésről a .NET-alkalmazások hitelesítése című témakörben olvashat bővebben.
Szerepkörök hozzárendelése a Microsoft Entra-felhasználóhoz
Helyi fejlesztéskor győződjön meg arról, hogy az Azure Service Bushoz csatlakozó felhasználói fiók rendelkezik a megfelelő engedélyekkel. Az üzenetek küldéséhez és fogadásához szüksége van az Azure Service Bus adattulajdonosi szerepkörére. A szerepkör hozzárendeléséhez szükség van a felhasználói hozzáférés-rendszergazdai szerepkörre, vagy egy másik szerepkörre, amely tartalmazza a Microsoft.Authorization/roleAssignments/write műveletet.
Azure RBAC-szerepköröket rendelhet egy felhasználóhoz az Azure Portal, az Azure CLI vagy az Azure PowerShell használatával. A szerepkör-hozzárendelések elérhető hatóköreinek további megismeréséhez tekintse meg az Azure RBAC hatókörének ismertetése című témakört.
Az alábbi példa hozzárendeli a szerepkört a Azure Service Bus Data Owner felhasználói fiókjához, amely teljes hozzáférést biztosít az Azure Service Bus-erőforrásokhoz. Egy valós helyzetben kövesse a legkisebb jogosultság elvét, hogy a felhasználóknak csak a szükséges minimális engedélyeket adja meg a biztonságosabb éles környezet érdekében.
Azure beépített szerepkörök az Azure Service Bushoz
Az Azure Service Bus esetében a névterek és az összes kapcsolódó erőforrás kezelése az Azure Portalon és az Azure Resource Management API-val már védett az Azure RBAC-modell használatával. Az Azure a következő beépített Azure-szerepköröket biztosítja a Service Bus-névtérhez való hozzáférés engedélyezéséhez:
- Azure Service Bus-adattulajdonos: Lehetővé teszi a Service Bus-névtérhez és annak entitásaihoz való adathozzáférést, beleértve az üzenetsorokat, témaköröket, előfizetéseket és szűrőket. A szerepkör egy tagja üzeneteket küldhet és fogadhat üzenetsorokból vagy témakörökből/előfizetésekből.
-
Azure Service Bus-adatküldő: Ezzel a szerepkörrel hozzáférést biztosíthat a
sendService Bus-névtérhez és annak entitásaihoz. -
Azure Service Bus-adat fogadó: Ezzel a szerepkörrel hozzáférést biztosíthat a
receiveService Bus-névtérhez és annak entitásaihoz.
Ha egyéni szerepkört szeretne létrehozni, tekintse meg a Service Bus-műveletekhez szükséges jogosultságokat.
Microsoft Entra-felhasználó hozzáadása az Azure Service Bus tulajdonosi szerepköréhez
Adja hozzá a Microsoft Entra-felhasználónevet az Azure Service Bus-adattulajdonosi szerepkörhöz a Service Bus névtér szintjén. Ez a konfiguráció lehetővé teszi, hogy a felhasználói fiók környezetében futó alkalmazások üzeneteket küldjenek egy üzenetsorba vagy egy témakörbe. Üzeneteket fogadhat egy üzenetsorból vagy egy témakör előfizetéséből.
Fontos
A szerepkör-hozzárendelés propagálása a legtöbb esetben egy-két percet vesz igénybe az Azure-ban. Ritkán akár nyolc percig is eltarthat. Ha hitelesítési hibákat kap a kód első futtatásakor, várjon néhány percet, és próbálkozzon újra.
Ha nem nyitotta meg a Service Bus Névtér lapját az Azure Portalon, keresse meg a Service Bus-névteret a fő keresősávon vagy a bal oldali navigációs sávon.
Az Áttekintés lapon válassza a Hozzáférés-vezérlés (IAM) lehetőséget a bal oldali menüben.
A Hozzáférés-vezérlés (IAM) lapon válassza a Szerepkör-hozzárendelések lapot.
Válassza a +Hozzáadás lehetőséget a felső menüből, majd a Szerepkör-hozzárendelés hozzáadása lehetőséget.
A keresőmezővel szűrheti az eredményeket a kívánt szerepkörre. Ebben a példában keresse meg
Azure Service Bus Data Ownerés válassza ki az egyező eredményt. Ezután válassza a Tovább gombot.A Hozzáférés hozzárendelése területen válassza a Felhasználó, csoport vagy szolgáltatásnév lehetőséget, majd válassza a + Tagok kijelölése lehetőséget.
A párbeszédpanelen keresse meg a Microsoft Entra-felhasználónevet (általában a user@domain e-mail-címét), majd válassza a Párbeszédpanel alján található Kiválasztás lehetőséget.
Válassza a Véleményezés + hozzárendelés lehetőséget a végső lapra való ugráshoz, majd a folyamat befejezéséhez a Véleményezés + hozzárendelés lehetőséget.
Csomagok telepítése pip használatával
A Service Bus gyorsútmutatóhoz szükséges Python-csomagok telepítéséhez nyisson meg egy parancssori ablakot, amelyben a Python szerepel.
Módosítsa a könyvtárat arra a mappára, ahol a mintákat szeretné használni.
Telepítse a következő csomagokat:
pip install azure-servicebus pip install azure-identity pip install aiohttp
Üzenetek küldése egy üzenetsorba
Az alábbi mintakód bemutatja, hogyan küldhet üzenetet egy üzenetsorba. Nyisson meg egy szövegszerkesztőt, például a Visual Studio Code-ot, hozzon létre egy fájl send.py, és adja hozzá a következő kódot.
Importálási utasítások hozzáadása.
import asyncio from azure.servicebus.aio import ServiceBusClient from azure.servicebus import ServiceBusMessage from azure.identity.aio import DefaultAzureCredentialAdjon hozzá állandókat, és definiáljon hitelesítő adatokat.
FULLY_QUALIFIED_NAMESPACE = "FULLY_QUALIFIED_NAMESPACE" QUEUE_NAME = "QUEUE_NAME" credential = DefaultAzureCredential()Fontos
- Cserélje le
FULLY_QUALIFIED_NAMESPACEa Service Bus-névtér teljes névterére. - Cserélje le
QUEUE_NAMEaz üzenetsor nevére.
- Cserélje le
Adjon hozzá egy metódust egyetlen üzenet küldéséhez.
async def send_single_message(sender): # Create a Service Bus message and send it to the queue message = ServiceBusMessage("Single Message") await sender.send_messages(message) print("Sent a single message")A feladó egy olyan objektum, amely ügyfélként működik a létrehozott üzenetsorhoz. Később hozza létre, és argumentumként elküldi ennek a függvénynek.
Adjon hozzá egy metódust az üzenetek listájának küldéséhez.
async def send_a_list_of_messages(sender): # Create a list of messages and send it to the queue messages = [ServiceBusMessage("Message in list") for _ in range(5)] await sender.send_messages(messages) print("Sent a list of 5 messages")Adjon hozzá egy metódust egy üzenetköteg küldéséhez.
async def send_batch_message(sender): # Create a batch of messages async with sender: batch_message = await sender.create_message_batch() for _ in range(10): try: # Add a message to the batch batch_message.add_message(ServiceBusMessage("Message inside a ServiceBusMessageBatch")) except ValueError: # ServiceBusMessageBatch object reaches max_size. # New ServiceBusMessageBatch object can be created here to send more data. break # Send the batch of messages to the queue await sender.send_messages(batch_message) print("Sent a batch of 10 messages")Hozzon létre egy Service Bus-ügyfelet, majd egy üzenetsor-küldő objektumot az üzenetek küldéséhez.
async def run(): # create a Service Bus client using the credential async with ServiceBusClient( fully_qualified_namespace=FULLY_QUALIFIED_NAMESPACE, credential=credential, logging_enable=True) as servicebus_client: # get a Queue Sender object to send messages to the queue sender = servicebus_client.get_queue_sender(queue_name=QUEUE_NAME) async with sender: # send one message await send_single_message(sender) # send a list of messages await send_a_list_of_messages(sender) # send a batch of messages await send_batch_message(sender) # Close credential when no longer needed. await credential.close()Hívja meg a metódust
run, és nyomtassa ki az üzenetet.asyncio.run(run()) print("Done sending messages") print("-----------------------")
Üzenetek fogadása üzenetsorból
Az alábbi mintakód bemutatja, hogyan fogadhat üzeneteket egy üzenetsorból. A megjelenő kód új üzeneteket kap, amíg nem kap új üzeneteket 5 (max_wait_time) másodpercig.
Nyisson meg egy szövegszerkesztőt, például a Visual Studio Code-ot, hozzon létre egy fájl recv.py, és adja hozzá a következő kódot.
A send.py mintához hasonlóan adjon hozzá
importutasításokat. Cserélje le az állandókat a saját értékeire, és adjon meg egy hitelesítő adatot.import asyncio from azure.servicebus.aio import ServiceBusClient from azure.identity.aio import DefaultAzureCredential FULLY_QUALIFIED_NAMESPACE = "FULLY_QUALIFIED_NAMESPACE" QUEUE_NAME = "QUEUE_NAME" credential = DefaultAzureCredential()Hozzon létre egy Service Bus-ügyfelet, majd egy üzenetsor-fogadó objektumot az üzenetek fogadásához.
async def run(): # create a Service Bus client using the connection string async with ServiceBusClient( fully_qualified_namespace=FULLY_QUALIFIED_NAMESPACE, credential=credential, logging_enable=True) as servicebus_client: async with servicebus_client: # get the Queue Receiver object for the queue receiver = servicebus_client.get_queue_receiver(queue_name=QUEUE_NAME) async with receiver: received_msgs = await receiver.receive_messages(max_wait_time=5, max_message_count=20) for msg in received_msgs: print("Received: " + str(msg)) # complete the message so that the message is removed from the queue await receiver.complete_message(msg) # Close credential when no longer needed. await credential.close()Hívja meg a metódust
run.asyncio.run(run())
Az alkalmazás futtatása
Nyisson meg egy parancssort, amelyen a Python szerepel, majd futtassa a kódot az üzenetsorból érkező üzenetek küldéséhez és fogadásához.
python send.py; python recv.py
A következő kimenetnek kell megjelennie:
Sent a single message
Sent a list of 5 messages
Sent a batch of 10 messages
Done sending messages
-----------------------
Received: Single Message
Received: Message in list
Received: Message in list
Received: Message in list
Received: Message in list
Received: Message in list
Received: Message inside a ServiceBusMessageBatch
Received: Message inside a ServiceBusMessageBatch
Received: Message inside a ServiceBusMessageBatch
Received: Message inside a ServiceBusMessageBatch
Received: Message inside a ServiceBusMessageBatch
Received: Message inside a ServiceBusMessageBatch
Received: Message inside a ServiceBusMessageBatch
Received: Message inside a ServiceBusMessageBatch
Received: Message inside a ServiceBusMessageBatch
Received: Message inside a ServiceBusMessageBatch
Az Azure Portalon keresse meg a Service Bus-névteret. Az Áttekintés lapon ellenőrizze, hogy a bejövő és kimenő üzenetek száma 16- e. Ha nem látja a számokat, várjon néhány percet, majd frissítse a lapot.
Válassza ki az üzenetsort ezen az Áttekintés lapon a Service Bus Üzenetsor lapjára való navigáláshoz. Ezen a lapon a bejövő és kimenő üzenetek száma is látható. Egyéb információkat is láthat, például az üzenetsor aktuális méretét és az aktív üzenetek számát.
Kapcsolódó tartalom
Tekintse meg a következő dokumentációt és mintákat:
-
- A sync_samples mappában olyan minták találhatók, amelyek bemutatják, hogyan használhatja szinkron módon a Service Bus szolgáltatást.
- A async_samples mappában olyan minták találhatók, amelyek bemutatják, hogyan használhatja a Service Bust aszinkron módon. Ebben a rövid útmutatóban ezt a módszert használta.