JavaScript kullanarak Olay Hub 'larına olay gönderme veya olayları alma (Azure/Olay-Hub 'ları)

Bu hızlı başlangıçta, Azure/Event-hub JavaScript paketini kullanarak Olay Hub 'ından olay gönderme ve olayları alma işlemlerinin nasıl yapılacağı gösterilir.

Önkoşullar

Azure Event Hubs 'yi yeni kullanıyorsanız, bu hızlı başlangıcı uygulamadan önce Event Hubs genel bakış bölümüne bakın.

Bu hızlı başlangıcı tamamlayabilmeniz için aşağıdaki önkoşullara sahip olmanız gerekir:

  • Microsoft Azure aboneliği. Azure Event Hubs dahil olmak üzere Azure hizmetlerini kullanmak için bir aboneliğiniz olması gerekir. Mevcut bir Azure hesabınız yoksa, ücretsiz deneme için kaydolabilir veya BIR hesap oluştururkenMSDN abonesi avantajlarınızı kullanabilirsiniz.

  • Sürüm 8. x veya üzeri Node.js. En son uzun süreli destek (LTS) sürümünüindirin.

  • Visual Studio Code (önerilir) veya diğer bir tümleşik geliştirme ortamı (ıde).

  • Etkin bir Event Hubs ad alanı ve Olay Hub 'ı. Bunları oluşturmak için aşağıdaki adımları uygulayın:

    1. Azure Portal, Event Hubs türünde bir ad alanı oluşturun ve ardından uygulamanızın Olay Hub 'ı ile iletişim kurması için gereken yönetim kimlik bilgilerini edinin.
    2. Ad alanı ve Olay Hub 'ı oluşturmak için hızlı başlangıç: Azure Portal kullanarak bir olay hub 'ı oluşturma' daki yönergeleri izleyin.
    3. Bu hızlı başlangıçtaki yönergeleri izleyerek devam edin.
    4. Olay Hub 'ı ad alanınız için bağlantı dizesini almak için bağlantı dizesi al' daki yönergeleri izleyin. Daha sonra bu hızlı başlangıçta kullanılacak bağlantı dizesini kaydedin.
  • Event Hubs bir ad alanı ve bir olay hub 'ı oluşturun. İlk adım, Event Hubs türünde bir ad alanı oluşturmak için Azure Portal ve uygulamanızın Olay Hub 'ı ile iletişim kurması için gereken yönetim kimlik bilgilerini elde etmek için kullanılır. Bir ad alanı ve Olay Hub 'ı oluşturmak için Bu makaledekiyordamı izleyin. Ardından, makalenin yönergelerini izleyerek Event Hubs ad alanı için bağlantı dizesini alın: bağlantı dizesi al. Bağlantı dizesini daha sonra bu hızlı başlangıçta kullanacaksınız.

NPM paketini yükler

Event Hubs için düğüm Paket Yöneticisi (npm) paketiniyüklemek için, yolunda npm olan bir komut istemi açın, dizini, örneklerinizi tutmak istediğiniz klasörle değiştirin ve ardından şu komutu çalıştırın:

npm install @azure/event-hubs

Alma tarafı için, iki paketi de yüklemeniz gerekir. Bu hızlı başlangıçta, programın zaten okuduğunuzdan olayları okuyamaması için kontrol noktalarını kalıcı hale getirmek üzere Azure Blob depolama alanını kullanırsınız. Alınan iletilerde meta veri denetim noktalarını bir Blobun düzenli aralıklarla gerçekleştirir. Bu yaklaşım, daha sonra kaldığınız yerden ileti almaya devam etmeyi kolaylaştırır.

Aşağıdaki komutları çalıştırın:

npm install @azure/storage-blob
npm install @azure/eventhubs-checkpointstore-blob

Olayları gönderme

Bu bölümde, olayları bir olay hub 'ına gönderen bir JavaScript uygulaması oluşturacaksınız.

  1. Visual Studio Codegibi en sevdiğiniz düzenleyiciyi açın.

  2. send.js adlı bir dosya oluşturun ve içine aşağıdaki kodu yapıştırın:

    const { EventHubProducerClient } = require("@azure/event-hubs");
    
    const connectionString = "EVENT HUBS NAMESPACE CONNECTION STRING";
    const eventHubName = "EVENT HUB NAME";
    
    async function main() {
    
      // Create a producer client to send messages to the event hub.
      const producer = new EventHubProducerClient(connectionString, eventHubName);
    
      // Prepare a batch of three events.
      const batch = await producer.createBatch();
      batch.tryAdd({ body: "First event" });
      batch.tryAdd({ body: "Second event" });
      batch.tryAdd({ body: "Third event" });    
    
      // Send the batch to the event hub.
      await producer.sendBatch(batch);
    
      // Close the producer client.
      await producer.close();
    
      console.log("A batch of three events have been sent to the event hub");
    }
    
    main().catch((err) => {
      console.log("Error occurred: ", err);
    });
    
  3. Kodda, aşağıdakileri değiştirmek için gerçek değerleri kullanın:

    • EVENT HUBS NAMESPACE CONNECTION STRING
    • EVENT HUB NAME
  4. node send.jsBu dosyayı yürütmek için ' i çalıştırın. Bu komut, Olay Hub 'ınıza üç olay toplu işi gönderir.

  5. Azure portal, Olay Hub 'ının iletileri aldığını doğrulayın. Ölçümler bölümünde iletiler görünümü ' ne geçin. Grafiği güncelleştirmek için sayfayı yenileyin. İletilerin alındığını göstermesi birkaç saniye sürebilir.

    Olay Hub 'ının iletileri aldığını doğrulama

    Not

    ek bilgilendirme açıklamaları dahil olmak üzere, tüm kaynak kodu için GitHub sendEvents.js sayfasınagidin.

Tebrikler! Olayları artık bir olay hub 'ına gönderdiniz.

Olayları alma

Bu bölümde bir JavaScript uygulamasında bir Azure Blob depolama denetim noktası deposu kullanarak bir olay hub 'ından olay alırsınız. Azure Depolama blob 'unda düzenli aralıklarla alınan iletilerde meta veri denetim noktaları gerçekleştirir. Bu yaklaşım, daha sonra kaldığınız yerden ileti almaya devam etmeyi kolaylaştırır.

Uyarı

bu kodu Azure Stack Hub 'da çalıştırırsanız, belirli bir Depolama apı sürümünü hedefetmediğiniz takdirde çalışma zamanı hatalarıyla karşılaşırsınız. bunun nedeni, Event Hubs SDK 'sının azure 'da kullanılabilen ve Azure Stack Hub platformunda kullanılamayan en son azure Depolama apı 'sini kullanması nedeniyle oluşur. Azure Stack Hub, Azure 'da genel kullanıma sunulan Depolama Blob SDK 'sının farklı bir sürümünü destekleyebilir. bir denetim noktası deposu olarak azure Blog Depolama kullanıyorsanız, Azure Stack Hub derlemeniz için desteklenen Azure Depolama apı sürümünü denetleyin ve kodunuzda bu sürümü hedefleyin.

örneğin, Azure Stack Hub sürüm 2005 üzerinde çalıştırıyorsanız, Depolama hizmeti için kullanılabilen en yüksek sürüm 2019-02-02 ' dir. Event Hubs SDK istemci kitaplığı, varsayılan olarak Azure 'da kullanılabilen en yüksek sürümü (SDK 'nın sürümü sırasında 2019-07-07) kullanır. bu durumda, bu bölümdeki adımların yanı sıra, Depolama service apı sürüm 2019-02-02 ' i hedeflemek için de kod eklemeniz gerekecektir. belirli bir Depolama apı sürümünün nasıl hedeflenecek hakkında bir örnek için, bkz. GitHub JavaScript ve TypeScript örnekleri.

Azure depolama hesabı ve BLOB kapsayıcısı oluşturma

Bir Azure depolama hesabı ve içinde bir blob kapsayıcısı oluşturmak için aşağıdaki işlemleri yapın:

  1. Azure depolama hesabı oluşturma
  2. Depolama hesabında bir blob kapsayıcısı oluşturma
  3. Bağlantı dizesini depolama hesabına al

Alma kodunda daha sonra kullanmak için bağlantı dizesini ve kapsayıcı adını kaydettiğinizden emin olun.

Olayları almak için kod yazma

  1. Visual Studio Codegibi en sevdiğiniz düzenleyiciyi açın.

  2. receive.js adlı bir dosya oluşturun ve içine aşağıdaki kodu yapıştırın:

    const { EventHubConsumerClient } = require("@azure/event-hubs");
    const { ContainerClient } = require("@azure/storage-blob");    
    const { BlobCheckpointStore } = require("@azure/eventhubs-checkpointstore-blob");
    
    const connectionString = "EVENT HUBS NAMESPACE CONNECTION STRING";    
    const eventHubName = "EVENT HUB NAME";
    const consumerGroup = "$Default"; // name of the default consumer group
    const storageConnectionString = "AZURE STORAGE CONNECTION STRING";
    const containerName = "BLOB CONTAINER NAME";
    
    async function main() {
      // Create a blob container client and a blob checkpoint store using the client.
      const containerClient = new ContainerClient(storageConnectionString, containerName);
      const checkpointStore = new BlobCheckpointStore(containerClient);
    
      // Create a consumer client for the event hub by specifying the checkpoint store.
      const consumerClient = new EventHubConsumerClient(consumerGroup, connectionString, eventHubName, checkpointStore);
    
      // Subscribe to the events, and specify handlers for processing the events and errors.
      const subscription = consumerClient.subscribe({
          processEvents: async (events, context) => {
            if (events.length === 0) {
              console.log(`No events received within wait time. Waiting for next interval`);
              return;
            }
    
            for (const event of events) {
              console.log(`Received event: '${event.body}' from partition: '${context.partitionId}' and consumer group: '${context.consumerGroup}'`);
            }
            // Update the checkpoint.
            await context.updateCheckpoint(events[events.length - 1]);
          },
    
          processError: async (err, context) => {
            console.log(`Error : ${err}`);
          }
        }
      );
    
      // After 30 seconds, stop processing.
      await new Promise((resolve) => {
        setTimeout(async () => {
          await subscription.close();
          await consumerClient.close();
          resolve();
        }, 30000);
      });
    }
    
    main().catch((err) => {
      console.log("Error occurred: ", err);
    });    
    
  3. Kodda, aşağıdaki değerleri değiştirmek için gerçek değerleri kullanın:

    • EVENT HUBS NAMESPACE CONNECTION STRING
    • EVENT HUB NAME
    • AZURE STORAGE CONNECTION STRING
    • BLOB CONTAINER NAME
  4. node receive.jsBu dosyayı yürütmek için bir komut isteminde çalıştırın. Pencerede alınan olaylar hakkında iletiler görüntülenmelidir.

    Not

    ek bilgilendirme açıklamaları dahil olmak üzere, tüm kaynak kodu için GitHub receiveEventsUsingCheckpointStore.js sayfasınagidin.

Tebrikler! Artık olay hub 'ınızdan olayları aldınız. Alıcı programı, Olay Hub 'ında varsayılan tüketici grubunun tüm bölümlerinden olayları alır.

Sonraki adımlar

GitHub bu örneklere göz atın: