Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Service Bus kuyruğuna ileti gönderme ve alma gibi basit bir senaryo için adım adım yönergeler sağlanmaktadır. Azure Service Bus için önceden oluşturulmuş JavaScript ve TypeScript örneklerini GitHub'daki Python için Azure SDK deposunda bulabilirsiniz.
Bu hızlı başlangıç rehberinde şunları yapacaksınız:
Azure portalı ile Service Bus ad alanı oluşturma.
Azure portalını kullanarak Service Bus kuyruğu oluşturma.
Azure-servicebus paketini kullanmak için Python kodu yazın:
- Kuyruğa bir dizi ileti gönderin.
- Bu iletileri kuyruktan alın.
Hizmette yeniyseniz başlamadan önce bkz. Service Bus'a genel bakış .
Önkoşullar
Azure aboneliği. Bu hızlı başlangıcı tamamlamak için bir Azure hesabınız olmalıdır. Visual Studio aboneleri için Aylık Azure kredilerinizi etkinleştirebilir veya ücretsiz bir hesaba kaydolabilirsiniz.
Python 3.8 veya üzeri.
Bu hızlı başlangıcı kendi Azure hesabınızla kullanmak için:
- Geliştirici makinenize parolasız kimlik doğrulaması sağlayan Azure CLI'yi yükleyin.
- ile terminalde veya komut isteminde Azure hesabınızla
az loginoturum açın. - Kaynağınıza uygun veri rolünü eklerken aynı hesabı kullanın.
- Kodu aynı terminalde veya komut isteminde çalıştırın.
- Service Bus ad alanınızın kuyruk adını not edin. Kodda buna ihtiyacınız var.
Bu hızlı başlangıç, Python kullanarak kopyalayıp çalıştırabileceğiniz örneklerle çalışır. Python uygulaması oluşturma yönergeleri için bkz . Hızlı Başlangıç: Azure App Service'e Python web uygulaması dağıtma. Bu hızlı başlangıçta kullanılan paketleri yükleme hakkında daha fazla bilgi için bkz. Python için Azure kitaplık paketlerini yükleme.
Azure portalında bir ad alanı oluşturma
Azure'da Service Bus mesajlaşma varlıklarını kullanmaya başlamak için, Azure genelinde benzersiz bir ada sahip bir ad alanı oluşturun. Ad alanı, uygulamanızdaki kuyruklar ve başlıklar gibi Service Bus kaynakları için bir kapsam kapsayıcısı sağlar.
Ad alanı oluşturmak için:
Azure Portal’ında oturum açın.
Sol üst kısımdaki açılır menüyü seçin ve Tüm hizmetler sayfasına gidin.
Sol gezinti çubuğunda Tümleştirme'yi seçin.
Mesajlaşma hizmetleri>Service Bus'a gidin ve Oluştur'u seçin.
Ad alanı oluştur sayfasının Temel Bilgiler sekmesinde şu adımları izleyin:
Abonelik için ad alanının oluşturulacağı bir Azure aboneliği seçin.
Kaynak grubu için mevcut bir kaynak grubunu seçin veya yeni bir kaynak grubu oluşturun.
Aşağıdaki adlandırma kurallarına uyan bir Ad Alanı adı girin:
- Adın Azure genelinde benzersiz olması gerekir. Adın kullanılabilirliği sistem tarafından hemen denetlenir.
- Ad uzunluğu en az 6 ve en fazla 50 karakterdir.
- Ad yalnızca harf, sayı, kısa çizgi
-içerebilir. - Ad bir harfle başlamalı ve bir harf veya numarayla bitmelidir.
- Ad veya
-sbile-mgmtbitmiyor.
Konum için ad alanınızı barındıracak bölgeyi seçin.
Fiyatlandırma katmanı için ad alanı için fiyatlandırma katmanını (Temel, Standart veya Premium) seçin. Bu hızlı başlangıç için Standart'ı seçin.
Premium katmanını seçerseniz, ad alanı için coğrafi çoğaltmayı etkinleştirebilirsiniz. Coğrafi çoğaltma özelliği, bir ad alanının meta verilerinin ve verilerinin birincil bölgeden bir veya daha fazla ikincil bölgeye sürekli çoğaltılmasını sağlar.
Önemli
Konuları ve abonelikleri kullanmak istiyorsanız Standart veya Premium'u seçin. Temel fiyatlandırma katmanında konular ve abonelikler desteklenmez.
Premium fiyatlandırma katmanını seçtiyseniz, mesajlaşma birimi sayısını belirtin. Premium katman, her iş yükünün yalıtılmış olarak çalışması için CPU ve bellek düzeyinde kaynak yalıtımı sağlar. Bu kaynak kapsayıcısı mesajlaşma birimi olarak adlandırılır. Premium ad alanında en az bir mesajlaşma birimi vardır. Her Service Bus Premium ad alanı için 1, 2, 4, 8 veya 16 mesajlaşma birimleri seçebilirsiniz. Daha fazla bilgi için bkz. Service Bus premium mesajlaşma katmanı.
Sayfanın alt kısmındaki Gözden geçir ve oluştur'u seçin.
Gözden geçir ve oluştur sayfasında ayarları gözden geçirin ve Oluştur'u seçin.
Kaynağın dağıtımı başarılı olduktan sonra dağıtım sayfasında Kaynağa git'i seçin.
Service Bus ad alanınızın giriş sayfasını görürsünüz.
Azure portalında kuyruk oluşturma
Service Bus Ad Alanı sayfasında, sol taraftaki gezinti menüsünde Varlıklar'ı genişletin ve Kuyruklar'ı seçin.
Kuyruklar sayfasındaki araç çubuğunda + Kuyruk'a tıklayın.
Kuyruk için bir ad girin. Diğer değerleri varsayılan değerleriyle bırakın.
Oluştur'i seçin.
Azure'da uygulamanın kimliğini doğrulama
Bu makalede Azure Service Bus'a bağlanmanın iki yolu gösterilmektedir: parolasız ve bağlantı dizesi.
İlk seçenek, Service Bus ad alanına bağlanmak için Microsoft Entra Id ve rol tabanlı erişim denetiminde (RBAC) güvenlik sorumlunuzu nasıl kullanacağınızı gösterir. Kodunuzda, yapılandırma dosyasında veya Azure Key Vault gibi güvenli bir depolama alanında sabit kodlanmış bir bağlantı dizesi olması konusunda endişelenmeniz gerekmez.
İkinci seçenek, Service Bus ad alanına bağlanmak için bir bağlantı dizesi nasıl kullanacağınızı gösterir. Azure'da yeniyseniz bağlantı dizesi seçeneğini daha kolay takip edebilirsiniz. Gerçek dünyadaki uygulamalarda ve üretim ortamlarında parolasız seçeneği kullanmanızı öneririz. Daha fazla bilgi için bkz. Service Bus kimlik doğrulaması ve yetkilendirmesi. Parolasız kimlik doğrulaması hakkında daha fazla bilgi için bkz. .NET uygulamalarının kimliğini doğrulama.
Microsoft Entra kullanıcınıza rol atama
Yerel olarak geliştirirken, Azure Service Bus'a bağlanan kullanıcı hesabının doğru izinlere sahip olduğundan emin olun. İleti göndermek ve almak için Azure Service Bus Veri Sahibi rolüne ihtiyacınız vardır. Kendinize bu rolü atamak için Kullanıcı Erişimi Yöneticisi rolüne veya eylemi içeren Microsoft.Authorization/roleAssignments/write başka bir role ihtiyacınız vardır.
Azure portalı, Azure CLI veya Azure PowerShell'i kullanarak kullanıcıya Azure RBAC rolleri atayabilirsiniz. Rol atamaları için kullanılabilir kapsamlar hakkında daha fazla bilgi edinmek için bkz. Azure RBAC kapsamını anlama.
Aşağıdaki örnekte rol, Azure Service Bus kaynaklarına tam erişim sağlayan kullanıcı hesabınıza atanır Azure Service Bus Data Owner . Gerçek bir senaryoda, kullanıcılara yalnızca daha güvenli bir üretim ortamı için gereken minimum izinleri vermek için en düşük ayrıcalık ilkesini izleyin.
Azure Service Bus için Azure yerleşik rolleri
Azure Service Bus için, Azure portalı ve Azure kaynak yönetimi API'sini kullanarak ad alanlarının ve tüm ilgili kaynakların yönetimi Azure RBAC modeli kullanılarak zaten korunur. Azure, Service Bus ad alanına erişim yetkisi vermek için aşağıdaki Azure yerleşik rollerini sağlar:
- Azure Service Bus Veri Yöneticisi: Kuyruklar, konular, abonelikler ve filtreler dahil olmak üzere, Service Bus ad alanı ve varlıklarına veri erişimini etkinleştirir. Bu rolün bir üyesi kuyruklardan veya konu başlıklarından/aboneliklerden ileti gönderip alabilir.
-
Azure Service Bus Veri Gönderen:
send'e, Service Bus ad alanı ve varlıklarına erişim vermek için bu rolü kullanın. - Azure Service Bus Veri Alıcısı: Service Bus ad alanına ve onun varlıklarına erişim vermek için bu rolü kullanın.
Özel bir rol oluşturmak istiyorsanız bkz . Service Bus işlemleri için gereken haklar.
Microsoft Entra kullanıcısını Azure Service Bus Sahibi rolüne ekleme
Microsoft Entra kullanıcı adınızı Service Bus ad alanı düzeyinde Azure Service Bus Veri Sahibi rolüne ekleyin. Bu yapılandırma, kullanıcı hesabınız bağlamında çalışan bir uygulamanın kuyruğa veya konuya ileti göndermesine olanak tanır. Bir kuyruktan veya konu aboneliğinden mesaj alabilir.
Önemli
Çoğu durumda rol atamasının Azure'a yayılması bir veya iki dakika sürer. Nadir durumlarda, sekiz dakikaya kadar sürebilir. Kodunuzu ilk kez çalıştırdığınızda kimlik doğrulama hataları alıyorsanız, birkaç dakika bekleyin ve yeniden deneyin.
Azure portalında Service Bus Ad Alanı sayfanız açık değilse ana arama çubuğunu veya sol gezintiyi kullanarak Service Bus ad alanınızı bulun.
Genel Bakış sayfasında, sol taraftaki menüden Erişim denetimi (IAM) öğesini seçin.
Erişim denetimi (IAM) sayfasında Rol atamaları sekmesini seçin.
Üst menüden + Ekle'yi ve ardından Rol ataması ekle'yi seçin.
Sonuçları istenen role göre filtrelemek için arama kutusunu kullanın. Bu örnek için eşleşen sonucu arayın
Azure Service Bus Data Ownerve seçin. Ardından İleri'yi seçin.Erişim ata'nın altında Kullanıcı, grup veya hizmet sorumlusu'na tıklayın ve ardından + Üye seç'e tıklayın.
İletişim kutusunda Microsoft Entra kullanıcı adınızı (genellikle user@domain e-posta adresiniz) arayın ve iletişim kutusunun alt kısmındaki Seç'i seçin.
Son sayfaya gitmek için Gözden geçir + ata'yı seçin ve ardından işlemi tamamlamak için Gözden geçir + yeniden ata'yı seçin.
Paketleri yüklemek için pip kullanma
Bu Service Bus hızlı başlangıcı için gerekli Python paketlerini yüklemek için, yolunda Python bulunan bir Komut İstemi penceresi açın.
Dizini, örneklerinizi almak istediğiniz klasörle değiştirin.
Aşağıdaki paketleri yükleyin:
pip install azure-servicebus pip install azure-identity pip install aiohttp
Kuyruğa ileti gönderme
Aşağıdaki örnek kod, kuyruğa ileti göndermeyi gösterir. Visual Studio Code gibi bir metin düzenleyicisi açın, send.py bir dosya oluşturun ve içine aşağıdaki kodu ekleyin.
İçeri aktarma deyimleri ekleyin.
import asyncio from azure.servicebus.aio import ServiceBusClient from azure.servicebus import ServiceBusMessage from azure.identity.aio import DefaultAzureCredentialSabitler ekleyin ve bir kimlik bilgisi tanımlayın.
FULLY_QUALIFIED_NAMESPACE = "FULLY_QUALIFIED_NAMESPACE" QUEUE_NAME = "QUEUE_NAME" credential = DefaultAzureCredential()Önemli
- değerini Service Bus ad alanınızın tam ad alanıyla değiştirin
FULLY_QUALIFIED_NAMESPACE. - yerine
QUEUE_NAMEkuyruğun adını yazın.
- değerini Service Bus ad alanınızın tam ad alanıyla değiştirin
Tek bir ileti göndermek için bir yöntem ekleyin.
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")Gönderen, oluşturduğunuz kuyruk için istemci işlevi gören bir nesnedir. Daha sonra oluşturup bu işleve bağımsız değişken olarak gönderirsiniz.
İleti listesi göndermek için bir yöntem ekleyin.
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")Toplu ileti göndermek için bir yöntem ekleyin.
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")İleti göndermek için bir Service Bus istemcisi ve ardından kuyruk gönderen nesnesi oluşturun.
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()yöntemini çağırın
runve bir ileti yazdırın.asyncio.run(run()) print("Done sending messages") print("-----------------------")
Kuyruktan ileti alma
Aşağıdaki örnek kod, bir kuyruktan nasıl ileti alabileceğinizi gösterir. Gösterilen kod, 5 (max_wait_time) saniye boyunca yeni ileti almayana kadar yeni iletiler alır.
Visual Studio Code gibi bir metin düzenleyicisi açın, recv.py bir dosya oluşturun ve aşağıdaki kodu ekleyin.
Benzer şekilde, send.py örneğine,
importifadeleri ekleyin. Sabitleri kendi değerlerinizle değiştirin ve bir kimlik bilgisi tanımlayın.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()İletileri almak için bir Service Bus istemcisi ve ardından bir kuyruk alıcı nesnesi oluşturun.
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()yöntemini çağırın
run.asyncio.run(run())
Uygulamayı çalıştırma
Yolunda Python bulunan bir komut istemi açın ve ardından kuyruktan ileti gönderip almak için kodu çalıştırın.
python send.py; python recv.py
Aşağıdaki çıkışı 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ında Service Bus ad alanınıza 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 bekleyin ve sayfayı yenileyin.
Service Bus Kuyruğu sayfasına gitmek için bu Genel Bakış sayfasındaki kuyruğu seçin. Bu sayfada gelen ve giden ileti sayısını da görebilirsiniz. Ayrıca kuyruğun geçerli boyutu ve etkin ileti sayısı gibi diğer bilgileri de görürsünüz.
İlgili içerik
Aşağıdaki belgelere ve örneklere bakın:
-
- sync_samples klasöründe Service Bus ile zaman uyumlu bir şekilde nasıl etkileşim kurabileceğinizi gösteren örnekler bulunur.
- async_samples klasöründe, Service Bus ile zaman uyumsuz bir şekilde nasıl etkileşim kurabileceğinizi gösteren örnekler bulunur. Bu hızlı başlangıçta bu yöntemi kullandınız.