posílání zpráv a příjem zpráv z front Service Bus Azure (Python)
v tomto článku se dozvíte, jak pomocí pythonu odesílat zprávy do front Azure Service Bus a přijímat z nich zprávy.
Poznámka
v tomto rychlém startu najdete podrobné pokyny pro jednoduchý scénář posílání zpráv do fronty Service Bus a jejich příjem. předem připravené ukázky jazyka JavaScript a TypeScript pro azure Service Bus najdete v části azure SDK for Python úložiště v GitHub.
Požadavky
- Předplatné Azure. můžete aktivovat výhody pro předplatitele Visual Studio nebo MSDN nebo si zaregistrovat bezplatný účet.
- pokud nemáte frontu, ve které byste mohli pracovat, postupujte podle kroků v tématu použití Azure Portal k vytvoření fronty Service Bus . poznamenejte si připojovací řetězec pro obor názvů Service Bus a název fronty , kterou jste vytvořili.
- python 2,7 nebo vyšší s nainstalovaným balíčkem Service Bus pro Python Další informace najdete v příručce pro instalaci Pythonu.
Zasílání zpráv do fronty
Přidejte následující příkaz import.
from azure.servicebus import ServiceBusClient, ServiceBusMessagePřidejte následující konstanty.
CONNECTION_STR = "<NAMESPACE CONNECTION STRING>" QUEUE_NAME = "<QUEUE NAME>"Důležité
- nahraďte
<NAMESPACE CONNECTION STRING>připojovacím řetězcem pro váš Service Bus obor názvů. - Nahraďte
<QUEUE NAME>názvem fronty.
- nahraďte
Přidejte metodu pro odeslání jedné zprávy.
def send_single_message(sender): # create a Service Bus message message = ServiceBusMessage("Single Message") # send the message to the queue sender.send_messages(message) print("Sent a single message")Odesilatel je objekt, který funguje jako klient pro vytvořenou frontu. Později ho vytvoříte a odešlete jako argument této funkce.
Přidejte metodu pro odeslání seznamu zpráv.
def send_a_list_of_messages(sender): # create a list of messages messages = [ServiceBusMessage("Message in list") for _ in range(5)] # send the list of messages to the queue sender.send_messages(messages) print("Sent a list of 5 messages")Přidejte metodu pro odeslání dávky zpráv.
def send_batch_message(sender): # create a batch of messages batch_message = 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 sender.send_messages(batch_message) print("Sent a batch of 10 messages")vytvořte klienta Service Bus a potom objekt odesílatele fronty pro odesílání zpráv.
# create a Service Bus client using the connection string servicebus_client = ServiceBusClient.from_connection_string(conn_str=CONNECTION_STR, logging_enable=True) with servicebus_client: # get a Queue Sender object to send messages to the queue sender = servicebus_client.get_queue_sender(queue_name=QUEUE_NAME) with sender: # send one message send_single_message(sender) # send a list of messages send_a_list_of_messages(sender) # send a batch of messages send_batch_message(sender) print("Done sending messages") print("-----------------------")
Přijímání zpráv z fronty
Po příkazu Print přidejte následující kód. Tento kód průběžně přijímá nové zprávy, dokud neobdrží žádné nové zprávy po dobu 5 ( max_wait_time ) sekund.
with servicebus_client:
# get the Queue Receiver object for the queue
receiver = servicebus_client.get_queue_receiver(queue_name=QUEUE_NAME, max_wait_time=5)
with receiver:
for msg in receiver:
print("Received: " + str(msg))
# complete the message so that the message is removed from the queue
receiver.complete_message(msg)
Úplný kód
# import os
from azure.servicebus import ServiceBusClient, ServiceBusMessage
CONNECTION_STR = "<NAMESPACE CONNECTION STRING>"
QUEUE_NAME = "<QUEUE NAME>"
def send_single_message(sender):
message = ServiceBusMessage("Single Message")
sender.send_messages(message)
print("Sent a single message")
def send_a_list_of_messages(sender):
messages = [ServiceBusMessage("Message in list") for _ in range(5)]
sender.send_messages(messages)
print("Sent a list of 5 messages")
def send_batch_message(sender):
batch_message = sender.create_message_batch()
for _ in range(10):
try:
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
sender.send_messages(batch_message)
print("Sent a batch of 10 messages")
servicebus_client = ServiceBusClient.from_connection_string(conn_str=CONNECTION_STR, logging_enable=True)
with servicebus_client:
sender = servicebus_client.get_queue_sender(queue_name=QUEUE_NAME)
with sender:
send_single_message(sender)
send_a_list_of_messages(sender)
send_batch_message(sender)
print("Done sending messages")
print("-----------------------")
with servicebus_client:
receiver = servicebus_client.get_queue_receiver(queue_name=QUEUE_NAME, max_wait_time=5)
with receiver:
for msg in receiver:
print("Received: " + str(msg))
receiver.complete_message(msg)
Spuštění aplikace
Při spuštění aplikace by se měl zobrazit následující výstup:
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
v Azure Portal přejděte do svého oboru názvů Service Bus. Na stránce Přehled ověřte, že počet příchozích a odchozích zpráv je 16. Pokud se počty nezobrazuje, aktualizujte stránku po několik minut.
na stránce s přehledem vyberte frontu a přejděte na stránku Service Bus queue . Na této stránce můžete také zobrazit počet příchozích a odchozích zpráv. Zobrazí se také další informace, jako je aktuální velikost fronty a Počet aktivních zpráv.
Další kroky
Podívejte se na následující dokumentaci a ukázky:
- klientská knihovna pro Azure Service Bus pro Python
- Ukázky.
- složka sync_samples obsahuje ukázky, které ukazují, jak pracovat s Service Bus synchronním způsobem. V tomto rychlém startu jste použili tuto metodu.
- složka async_samples obsahuje ukázky, které ukazují, jak pracovat s Service Bus asynchronním způsobem.
- Referenční dokumentace k Azure-ServiceBus