Hızlı Başlangıç: Service Bus kuyruğuna oluşturmak için Azure portalını kullanmaQuickstart: Use Azure portal to create a Service Bus queue

Bu hızlı başlangıçta ve bir Service Bus kuyruğundan ileti alıp gönderebilir açıklar kullanarak Azure portalında Mesajlaşma Ad alanı ve bu ad alanındaki kuyruk oluşturma ve üzerine yetkilendirme kimlik bilgilerini almak için ad alanı.This quickstart describes how to send and receive messages to and from a Service Bus queue, using the Azure portal to create a messaging namespace and a queue within that namespace, and to obtain the authorization credentials on that namespace. Daha sonra yordam, .NET Standard kitaplığı kullanılarak bu kuyruktan nasıl ileti gönderilip alınacağını gösterir.The procedure then shows how to send and receive messages from this queue using the .NET Standard library.

Service Bus kuyrukları nelerdir?What are Service Bus queues?

Service Bus kuyrukları aracılı mesajlaşma iletişim modelini destekler.Service Bus queues support a brokered messaging communication model. Kuyruklar kullanıldığında, dağıtılmış uygulamanın bileşenleri birbirleriyle doğrudan iletişim kurmazlar; bunun yerine bir aracı gibi davranan bir kuyruk aracılığıyla iletileri değiş tokuş eder (aracı).When using queues, components of a distributed application do not communicate directly with each other; instead they exchange messages via a queue, which acts as an intermediary (broker). İleti üreticisi (gönderen) iletiyi kuyruğa aktarır ve ardından işleme devam eder.A message producer (sender) hands off a message to the queue and then continues its processing. Zaman uyumsuz olarak, ileti tüketicisi (alıcı) iletiyi kuyruktan alır ve bunu işler.Asynchronously, a message consumer (receiver) pulls the message from the queue and processes it. Üreticinin işleme devam etmesi ve daha fazla ileti göndermesi için tüketiciden yanıt beklemesi gerekmez.The producer does not have to wait for a reply from the consumer in order to continue to process and send further messages. Kuyruklar, bir veya birden çok rakip tüketiciye İlk Giren İlk Çıkar (FIFO) yöntemine göre ileti teslimi sunar.Queues offer First In, First Out (FIFO) message delivery to one or more competing consumers. Bu da, genellikle iletilerin kuyruğa eklendiği bir düzende alıcılar tarafından alınıp işleneceği ve her iletinin tek bir ileti tüketicisi tarafından alınıp işleneceği anlamına gelir.That is, messages are typically received and processed by the receivers in the order in which they were added to the queue, and each message is received and processed by only one message consumer.

QueueConcepts

Service Bus kuyrukları çok sayıda çeşitli senaryolar için kullanılabilen genel amaçlı bir teknolojidir:Service Bus queues are a general-purpose technology that can be used for a wide variety of scenarios:

  • Çok katmanlı bir Azure uygulamasında web ve çalışan rolleri arasındaki iletişim.Communication between web and worker roles in a multi-tier Azure application.
  • Karma bir çözümde şirket içi uygulamalar ve Azure barındırmalı uygulamalar arasındaki iletişim.Communication between on-premises apps and Azure-hosted apps in a hybrid solution.
  • Farklı kuruluşlarda veya bir kuruluşun farklı departmanlarında şirket içi çalışan dağıtılmış bir uygulamanın bileşenleri arasındaki iletişim.Communication between components of a distributed application running on-premises in different organizations or departments of an organization.

Kuyrukların kullanılması uygulamalarınızı daha kolay ölçeklendirmenizi ve mimarinizi daha dayanıklı hale getirmenizi sağlar.Using queues enables you to scale your applications more easily, and enable more resiliency to your architecture.

ÖnkoşullarPrerequisites

Bu öğreticiyi tamamlamak için şunları yüklediğinizden emin olun:To complete this tutorial, make sure you have installed:

Azure portalında bir ad alanı oluşturmaCreate a namespace in the Azure portal

Azure'da Service Bus mesajlaşma varlıklarını kullanmaya başlamak için öncelikle Azure'da benzersiz olan bir ad alanı oluşturmanız gerekir.To begin using Service Bus messaging entities in Azure, you must first create a namespace with a name that is unique across Azure. Ad alanı, uygulamanızda bulunan Service Bus kaynaklarını adreslemek için içeriğin kapsamını belirleyen bir kapsayıcı sunar.A namespace provides a scoping container for addressing Service Bus resources within your application.

Ad alanı oluşturmak için:To create a namespace:

  1. Azure portalda oturum açmaSign in to the Azure portal

  2. Portalın sol gezinti bölmesinde seçin + kaynak Oluşturseçin tümleştirmeve ardından Service Bus.In the left navigation pane of the portal, select + Create a resource, select Integration, and then select Service Bus.

    Kaynak Oluştur tümleştirme -> Service Bus ->

  3. İçinde ad alanı oluşturma iletişim kutusunda, aşağıdaki adımları uygulayın:In the Create namespace dialog, do the following steps:

    1. Girin bir ad alanı adı.Enter a name for the namespace. Adın kullanılabilirliği sistem tarafından hemen denetlenir.The system immediately checks to see if the name is available. Namespaces adlandırma kurallarının bir listesi için bkz. Namespace REST API oluşturma.For a list of rules for naming namespaces, see Create Namespace REST API.

    2. Ad alanı için fiyatlandırma katmanını (temel, standart veya Premium) seçin.Select the pricing tier (Basic, Standard, or Premium) for the namespace. Kullanmak istiyorsanız konuları ve abonelikleri, standart veya Premium seçin.If you want to use topics and subscriptions, choose either Standard or Premium. Konular/abonelikler, Temel fiyatlandırma katmanında desteklenmez.Topics/subscriptions are not supported in the Basic pricing tier.

    3. Seçtiyseniz Premium fiyatlandırma katmanında, şu adımları izleyin:If you selected the Premium pricing tier, follow these steps:

      1. Sayısını Mesajlaşma birimleri.Specify the number of messaging units. Premium katmanı, her iş yükü yalıtımlı şekilde çalışır. böylece CPU ve bellek düzeyinde kaynak yalıtımına sunar.The premium tier provides resource isolation at the CPU and memory level so that each workload runs in isolation. Bu kaynak kapsayıcısı Mesajlaşma birimi olarak adlandırılır.This resource container is called a messaging unit. Bir premium ad alanı en az bir Mesajlaşma birimi var.A premium namespace has least one messaging unit. 1, 2 veya 4 Mesajlaşma birimi her Service Bus Premium ad alanı için seçebilirsiniz.You can select 1, 2, or 4 messaging units for each Service Bus Premium namespace. Daha fazla bilgi için Service Bus Premium Mesajlaşma.For more information, see Service Bus Premium Messaging.
      2. Ad alanı yapmak isteyip istemediğinizi belirtin bölgesel olarak yedekli.Specify whether you want to make the namespace zone redundant. Bölge artıklığı kullanılabilirlik bölgelerindeki ek maliyet olmadan tek bir bölgede kopyaların yayılmasını sağlayarak gelişmiş kullanılabilirlik sağlar.The zone redundancy provides enhanced availability by spreading replicas across availability zones within one region at no additional cost. Daha fazla bilgi için Azure kullanılabilirlik alanlarında.For more information, see Availability zones in Azure.
    4. İçin abonelik, ad alanı oluşturulacağı bir Azure aboneliği seçersiniz.For Subscription, choose an Azure subscription in which to create the namespace.

    5. İçin kaynak grubu, hangi ad alanı canlı, veya yeni bir kaynak grubu seçin.For Resource group, choose an existing resource group in which the namespace will live, or create a new one.

    6. İçin konumu, bölgeyi hangi ad alanınızın barındırılması seçin.For Location, choose the region in which your namespace should be hosted.

    7. Oluştur’u seçin.Select Create. Artık sistem ad alanınızı oluşturur ve kullanıma açar.The system now creates your namespace and enables it. Sistem, hesabınıza yönelik kaynakları sağlarken birkaç dakika beklemeniz gerekebilir.You might have to wait several minutes as the system provisions resources for your account.

      ad alanı oluşturma

  4. Service bus ad alanı başarıyla dağıtıldığından emin olun.Confirm that the service bus namespace is deployed successfully. Bildirimleri görmek için seçin zil simgesini (Uyarılar) araç.To see the notifications, select the bell icon (Alerts) on the toolbar. Seçin kaynak grubunun adı görüntüde gösterildiği gibi bildirim.Select the name of the resource group in the notification as shown in the image. Service bus ad alanı içeren kaynak grubunu görürsünüz.You see the resource group that contains the service bus namespace.

    Dağıtım Uyarısı

  5. Üzerinde kaynak grubu seçin, kaynak grubunuzun sayfasında, service bus ad alanı.On the Resource group page for your resource group, select your service bus namespace.

    Kaynak grubu sayfası - service bus ad alanınızı seçin

  6. Service bus ad alanı için giriş sayfasını görürsünüz.You see the home page for your service bus namespace.

    Service bus ad alanınız için giriş sayfası

Bağlantı dizesini almaGet the connection string

Yeni bir ad alanı oluşturulduğunda, her biri ad alanının tüm yönleri üzerinde tam denetim veren ilişkili bir çift birincil ve ikincil anahtara sahip bir ilk Paylaşılan Erişim İmzası (SAS) kuralı otomatik olarak oluşturulur.Creating a new namespace automatically generates an initial Shared Access Signature (SAS) rule with an associated pair of primary and secondary keys that each grant full control over all aspects of the namespace. Bkz: Service Bus kimlik doğrulama ve yetkilendirme ile daha fazla kuralları oluşturma hakkında daha fazla bilgi için kısıtlı haklar sıradan göndericiler ve alıcılar için.See Service Bus authentication and authorization for information about how to create rules with more constrained rights for regular senders and receivers. Ad alanınız için birincil ve ikincil anahtarları kopyalamak için aşağıdaki adımları izleyin:To copy the primary and secondary keys for your namespace, follow these steps:

  1. Tüm kaynaklar’a ve sonra yeni oluşturulan ad alanı adına tıklayın.Click All resources, then click the newly created namespace name.

  2. Ad alanı penceresinde Paylaşılan erişim ilkeleri'ne tıklayın.In the namespace window, click Shared access policies.

  3. Paylaşılan erişim ilkeleri ekranında RootManageSharedAccessKey seçeneğine tıklayın.In the Shared access policies screen, click RootManageSharedAccessKey.

    bağlantı bilgisi

  4. İçinde İlkesi: RootManageSharedAccessKey penceresi, yanındaki Kopyala düğmesine tıklatarak PRIMARY CONNECTION Strıng'i, bağlantı dizesini Panonuza daha sonra kullanmak üzere kopyalayın.In the Policy: RootManageSharedAccessKey window, click the copy button next to Primary Connection String, to copy the connection string to your clipboard for later use. Bu değeri Not Defteri veya başka bir geçici konuma yapıştırın.Paste this value into Notepad or some other temporary location.

    bağlantı dizesi

  5. Birincil anahtar değerini daha sonra kullanmak üzere geçici bir konuma kopyalayarak önceki adımı tamamlayın.Repeat the previous step, copying and pasting the value of Primary key to a temporary location for later use.

Azure portalını kullanarak kuyruk oluşturmaCreate a queue in the Azure portal

  1. Üzerinde Service Bus Namespace sayfasında kuyrukları sol gezinti menüsünde.On the Service Bus Namespace page, select Queues in the left navigational menu.

  2. Üzerinde kuyrukları sayfasında + kuyruk araç.On the Queues page, select + Queue on the toolbar.

  3. Girin bir adı kuyruğu ve diğer değerleri varsayılan olarak bırakın.Enter a name for the queue, and leave the other values with their defaults.

  4. Şimdi, seçtiğiniz Oluştur.Now, select Create.

    Kuyruklar -> + sırası -> Enter adı -> oluşturma

İleti alma ve göndermeSend and receive messages

Ad alanı ve kuyruğun sağlanmasının ve gerekli kimlik bilgilerine sahip olmanızın ardından ileti gönderip almaya hazırsınız demektir.After the namespace and queue are provisioned, and you have the necessary credentials, you are ready to send and receive messages. Bu GitHub örnek klasöründeki kodu inceleyebilirsiniz.You can examine the code in this GitHub sample folder.

Kodu çalıştırmak için aşağıdakileri yapın:To run the code, do the following:

  1. Service Bus GitHub deposunu aşağıdaki komutu çalıştırarak kopyalayın:Clone the Service Bus GitHub repository by issuing the following command:

    git clone https://github.com/Azure/azure-service-bus.git
    
  2. Örnek azure-service-bus\samples\DotNet\GettingStarted\BasicSendReceiveQuickStart\BasicSendReceiveQuickStart klasörüne gidin.Navigate to the sample folder azure-service-bus\samples\DotNet\GettingStarted\BasicSendReceiveQuickStart\BasicSendReceiveQuickStart.

  3. Bağlantı dizesini kopyalayın ve kuyruk adı yönetim elde içinde elde edilen kimlik bilgileri bölümü.Copy the connection string and queue name you obtained in the Obtain the management credentials section.

  4. Bir komut isteminde aşağıdaki komutu yazın:At a command prompt, type the following command:

    dotnet build
    
  5. bin\Debug\netcoreapp2.0 klasörüne gidin.Navigate to the bin\Debug\netcoreapp2.0 folder.

  6. Programı çalıştırmak için aşağıdaki komutu yazın.Type the following command to run the program. myConnectionString yerine daha önce aldığınız değeri ve myQueueName yerine oluşturduğunuz kuyruğun adını koymayı unutmayın:Be sure to replace myConnectionString with the value you previously obtained, and myQueueName with the name of the queue you created:

    dotnet BasicSendReceiveQuickStart.dll -ConnectionString "myConnectionString" -QueueName "myQueueName"
    
  7. Kuyruğa 10 ileti gönderildiğini ve ardından bunların kuyruktan alındığını gözlemleyin:Observe 10 messages being sent to the queue, and subsequently received from the queue:

    program çıktısı

Kaynakları temizlemeClean up resources

Kaynak grubu, ad alanı ve kuyruğu kaldırmak için portalı kullanabilirsiniz.You can use the portal to remove the resource group, namespace, and queue.

Örnek kodu anlamaUnderstand the sample code

Bu bölümde örnek kodun işlevleri hakkında daha fazla ayrıntı bulunmaktadır.This section contains more details about what the sample code does.

Bağlantı dizesini ve kuyruğu almaGet connection string and queue

Bağlantı dizesi ve kuyruk adı geçirilir Main() yöntemi olarak komut satırı bağımsız değişkenleri.The connection string and queue name are passed to the Main() method as command-line arguments. Main(), bu değerleri tutmak için iki dize değişkeni bildirir:Main() declares two string variables to hold these values:

static void Main(string[] args)
{
    string ServiceBusConnectionString = "";
    string QueueName = "";

    for (int i = 0; i < args.Length; i++)
    {
        var p = new Program();
        if (args[i] == "-ConnectionString")
        {
            Console.WriteLine($"ConnectionString: {args[i+1]}");
            ServiceBusConnectionString = args[i + 1]; 
        }
        else if(args[i] == "-QueueName")
        {
            Console.WriteLine($"QueueName: {args[i+1]}");
            QueueName = args[i + 1];
        }                
    }

    if (ServiceBusConnectionString != "" && QueueName != "")
        MainAsync(ServiceBusConnectionString, QueueName).GetAwaiter().GetResult();
    else
    {
        Console.WriteLine("Specify -Connectionstring and -QueueName to execute the example.");
        Console.ReadKey();
    }                            
}

Main() yöntemi daha sonra zaman uyumsuz ileti döngüsünü (MainAsync()) başlatır.The Main() method then starts the asynchronous message loop, MainAsync().

İleti döngüsüMessage loop

MainAsync() yöntemi kuyruğu istemcisi ile komut satırı bağımsız değişkenlerini oluşturur, adlandırılmış alan bir ileti işleyicisini çağırır RegisterOnMessageHandlerAndReceiveMessages()ve bir dizi ileti gönderir:The MainAsync() method creates a queue client with the command-line arguments, calls a receiving message handler named RegisterOnMessageHandlerAndReceiveMessages(), and sends the set of messages:

static async Task MainAsync(string ServiceBusConnectionString, string QueueName)
{
    const int numberOfMessages = 10;
    queueClient = new QueueClient(ServiceBusConnectionString, QueueName);

    Console.WriteLine("======================================================");
    Console.WriteLine("Press any key to exit after receiving all the messages.");
    Console.WriteLine("======================================================");

    // Register QueueClient's MessageHandler and receive messages in a loop
    RegisterOnMessageHandlerAndReceiveMessages();

    // Send Messages
    await SendMessagesAsync(numberOfMessages);

    Console.ReadKey();

    await queueClient.CloseAsync();
}

RegisterOnMessageHandlerAndReceiveMessages() yöntemi, basit bir şekilde birkaç ileti işleyicisi seçeneği ayarlar, daha sonra kuyruk istemcisinin RegisterMessageHandler() yöntemini çağırarak alma işlemini başlatır:The RegisterOnMessageHandlerAndReceiveMessages() method simply sets a few message handler options, then calls the queue client's RegisterMessageHandler() method, which starts the receiving:

static void RegisterOnMessageHandlerAndReceiveMessages()
{
    // Configure the MessageHandler Options in terms of exception handling, number of concurrent messages to deliver etc.
    var messageHandlerOptions = new MessageHandlerOptions(ExceptionReceivedHandler)
    {
        // Maximum number of Concurrent calls to the callback `ProcessMessagesAsync`, set to 1 for simplicity.
        // Set it according to how many messages the application wants to process in parallel.
        MaxConcurrentCalls = 1,

        // Indicates whether MessagePump should automatically complete the messages after returning from User Callback.
        // False below indicates the Complete will be handled by the User Callback as in `ProcessMessagesAsync` below.
        AutoComplete = false
    };

    // Register the function that will process messages
    queueClient.RegisterMessageHandler(ProcessMessagesAsync, messageHandlerOptions);
} 

İleti göndermeSend messages

İleti oluşturma ve gönderme işlemleri, SendMessagesAsync() yönteminde gerçekleşir:The message creation and send operations occur in the SendMessagesAsync() method:

static async Task SendMessagesAsync(int numberOfMessagesToSend)
{
    try
    {
        for (var i = 0; i < numberOfMessagesToSend; i++)
        {
            // Create a new message to send to the queue
            string messageBody = $"Message {i}";
            var message = new Message(Encoding.UTF8.GetBytes(messageBody));

            // Write the body of the message to the console
            Console.WriteLine($"Sending message: {messageBody}");

            // Send the message to the queue
            await queueClient.SendAsync(message);
        }
    }
    catch (Exception exception)
    {
        Console.WriteLine($"{DateTime.Now} :: Exception: {exception.Message}");
    }
}

İletileri işlemeProcess messages

ProcessMessagesAsync() yöntemi, iletilerin alınmasını onaylar, işler ve tamamlar:The ProcessMessagesAsync() method acknowledges, processes, and completes the receipt of the messages:

static async Task ProcessMessagesAsync(Message message, CancellationToken token)
{
    // Process the message
    Console.WriteLine($"Received message: SequenceNumber:{message.SystemProperties.SequenceNumber} Body:{Encoding.UTF8.GetString(message.Body)}");

    // Complete the message so that it is not received again.
    await queueClient.CompleteAsync(message.SystemProperties.LockToken);
}

Not

Service Bus kaynakları ile yönetebileceğiniz hizmet veri yolu Gezgini.You can manage Service Bus resources with Service Bus Explorer. Hizmet veri yolu Gezgini, bir Service Bus ad alanınıza bağlanın ve mesajlaşma varlıkları kolay bir şekilde yönetmek kullanıcıların sağlar.The Service Bus Explorer allows users to connect to a Service Bus namespace and administer messaging entities in an easy manner. Araç, içeri/dışarı aktarma işlevleri veya konu, kuyruklar, abonelikler, geçiş hizmetleri, bildirim hub'ları ve olay hub'ları test etme olanağı gibi gelişmiş özellikler sağlar.The tool provides advanced features like import/export functionality or the ability to test topic, queues, subscriptions, relay services, notification hubs and events hubs.

Sonraki adımlarNext steps

Bu makalede, bir Service Bus alan adı ve bir kuyruktan ileti gönderip almak için gereken diğer kaynakları oluşturdunuz.In this article, you created a Service Bus namespace and other resources required to send and receive messages from a queue. Öğreticiler, ileti göndermek ve almak için kod yazma hakkında daha fazla bilgi için devam iletileri gönderip bölümü.To learn more about writing code to send and receive messages, continue to the tutorials in the Send and receive messages section.