Azure Service Bus kuyruklarından (Python) ileti gönderme ve iletileri alma
bu makalede, Python kullanarak Azure Service Bus kuyruklarından ileti gönderme ve alma işlemlerinin nasıl yapılacağı gösterilir.
Not
bu hızlı başlangıç, Service Bus kuyruğuna ileti gönderme ve bunları alma basit senaryosu için adım adım yönergeler sağlar. azure Service Bus için önceden oluşturulmuş JavaScript ve TypeScript örneklerini GitHub üzerinde Python deposu için azure SDK'da bulabilirsiniz.
Önkoşullar
- Azure aboneliği. Visual Studio veya MSDN abonesi avantajlarınızı etkinleştirebilir veya ücretsiz bir hesapiçin kaydolabilirsiniz.
- birlikte çalışmak için bir kuyruğunuz yoksa, bir kuyruk oluşturmak için Service Bus kuyruğu oluşturmak üzere Azure portal kullanma adımlarını izleyin. Service Bus ad alanınız ve oluşturduğunuz kuyruğun adı için bağlantı dizesini aklınızda edin.
- python Azure Service Bus paketi yüklüyken python 2,7 veya üzeri. Daha fazla bilgi için bkz. Python Yükleme Kılavuzu.
Kuyruğa ileti gönderme
Aşağıdaki içeri aktarma ifadesini ekleyin.
from azure.servicebus import ServiceBusClient, ServiceBusMessageAşağıdaki sabitleri ekleyin.
CONNECTION_STR = "<NAMESPACE CONNECTION STRING>" QUEUE_NAME = "<QUEUE NAME>"Önemli
<NAMESPACE CONNECTION STRING>Service Bus ad alanınız için bağlantı dizesiyle değiştirin.<QUEUE NAME>Kuyruğun adıyla değiştirin.
Tek bir ileti göndermek için bir yöntem ekleyin.
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")Gönderen, oluşturduğunuz sıra için istemci görevi gören bir nesnedir. Daha sonra oluşturacaksınız ve bu işleve bağımsız değişken olarak gönderebilirsiniz.
İleti listesi göndermek için bir yöntem ekleyin.
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")İleti toplu işi göndermek için bir yöntem ekleyin.
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")ileti göndermek için bir Service Bus istemcisi ve sonra bir kuyruk gönderen nesnesi oluşturun.
# 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("-----------------------")
Kuyruktan ileti alma
Print deyimden sonra aşağıdaki kodu ekleyin. Bu kod, 5 () saniye boyunca yeni iletiler almamaya kadar yeni iletileri sürekli alır max_wait_time .
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)
Tam kod
# 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)
Uygulamayı çalıştırma
Uygulamayı çalıştırdığınızda aşağıdaki çıktıyı görmeniz gerekir:
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
Azure portal, Service Bus ad alanına gidin. Genel bakış sayfasında gelen ve giden ileti sayılarının 16 olduğunu doğrulayın. Sayıları görmüyorsanız, birkaç dakika bekledikten sonra sayfayı yenileyin.
Service Bus kuyruğu sayfasına gitmek için bu genel bakış sayfasında kuyruğu seçin. Bu sayfada gelen ve giden ileti sayısını da görebilirsiniz. Ayrıca, sıranın geçerli boyutu ve etkin ileti sayısı gibi diğer bilgileri de görürsünüz.
Sonraki adımlar
Aşağıdaki belgelere ve örneklere bakın:
- Python için Azure Service Bus istemci kitaplığı
- Örnekler.
- sync_samples klasörü, Service Bus ile zaman uyumlu şekilde nasıl etkileşim kuracağınızı gösteren örneklere sahiptir. Bu hızlı başlangıç bölümünde bu yöntemi kullandınız.
- async_samples klasörü, zaman uyumsuz bir şekilde Service Bus ile nasıl etkileşim kuracağınızı gösteren örneklere sahiptir.
- Azure-ServiceBus başvuru belgeleri