Mulai cepat : Mengirim peristiwa ke Azure Event Hubs menggunakan C

Pengantar

Azure Event Hubs adalah platform streaming Big Data dan layanan pengolahan peristiwa, yang mampu menerima dan memproses jutaan peristiwa per detik. Event Hubs dapat memproses dan menyimpan peristiwa, data, atau telemetri yang dihasilkan oleh perangkat lunak dan perangkat yang terdistribusi. Data yang dikirim ke pusat aktivitas dapat ditransformasikan dan disimpan menggunakan penyedia analitik real-time atau adapter batching/penyimpanan. Untuk ringkasan detail Azure Event Hubs, lihat Ringkasan Azure Event Hubs dan fitur Azure Event Hubs.

Tutorial ini menjelaskan cara mengirim peristiwa ke pusat aktivitas menggunakan aplikasi konsol di C.

Prasyarat

Untuk menyelesaikan tutorial ini, Anda memerlukan hal berikut:

  • Lingkungan pengembangan C. Tutorial ini mengasumsikan gcc menumpuk pada Azure Linux VM dengan Ubuntu 14.04.
  • Microsoft Visual Studio.
  • Membuat ruang nama Azure Event Hubs dan pusat aktivitas. Gunakan portal Microsoft Azure untuk membuat kumpulan nama jenis Event Hubs, dan dapatkan info manajemen yang diperlukan aplikasi Anda untuk berkomunikasi dengan pusat aktivitas. Untuk membuat namespace layanan dan pusat aktivitas, ikuti prosedur dalam artikel ini. Dapatkan nilai kunci akses untuk pusat aktivitas dengan mengikuti instruksi dari artikel: Dapatkan string koneksi. Anda menggunakan kunci akses dalam kode yang Anda tulis nanti di tutorial ini. Nama kunci default adalah: RootManageSharedAccessKey.

Menulis kode untuk mengirim pesan ke Azure Event Hubs

Di bagian ini memperlihatkan cara menulis aplikasi C untuk mengirim peristiwa ke pusat aktivitas Anda. Kode ini menggunakan pustaka Proton AMQP dari proyek Apache Qpid. Menggunakan antrean dan topik Azure Service Bus dengan AMQP dari C ini bersifat analog seperti yang ditunjukkan di sampel ini. Untuk informasi selengkapnya, lihat dokumentasi Qpid Proton.

  1. Dari halaman Messenger Qpid AMQP, ikuti instruksi untuk memasang Qpid Proton, tergantung pada lingkungan Anda.

  2. Untuk mengompilasi pustaka Proton, pasang paket berikut:

    sudo apt-get install build-essential cmake uuid-dev openssl libssl-dev
    
  3. Unduh pustaka Qpid Proton,dan ekstrak, misalnya:

    wget https://archive.apache.org/dist/qpid/proton/0.7/qpid-proton-0.7.tar.gz
    tar xvfz qpid-proton-0.7.tar.gz
    
  4. Buat direktori build, kompilasikan dan pasang:

    cd qpid-proton-0.7
    mkdir build
    cd build
    cmake -DCMAKE_INSTALL_PREFIX=/usr ..
    sudo make install
    
  5. Di direktori kerja Anda, buat file baru yang disebut sender.c dengan kode berikut. Ingatlah untuk mengganti nilai untuk kunci/nama SAS, nama pusat aktivitas, dan kumpulan nama Anda. Anda juga harus mengganti versi kunci yang dikodekan URL untuk SendRule yang dibuat sebelumnya. Anda dapat mengkodekan URL di sini.

    #include "proton/message.h"
    #include "proton/messenger.h"
    
    #include <getopt.h>
    #include <proton/util.h>
    #include <sys/time.h>
    #include <stddef.h>
    #include <stdio.h>
    #include <string.h>
    #include <unistd.h>
    #include <stdlib.h>
    #include <signal.h>
    
    volatile sig_atomic_t stop = 0;
    
    #define check(messenger)                                                     \
      {                                                                          \
        if(pn_messenger_errno(messenger))                                        \
        {                                                                        \
          printf("check\n");                                                     \
          die(__FILE__, __LINE__, pn_error_text(pn_messenger_error(messenger))); \
        }                                                                        \
      }
    
    void interrupt_handler(int signum){
      if(signum == SIGINT){
        stop = 1;
      }
    }
    
    pn_timestamp_t time_now(void)
    {
      struct timeval now;
      if (gettimeofday(&now, NULL)) pn_fatal("gettimeofday failed\n");
      return ((pn_timestamp_t)now.tv_sec) * 1000 + (now.tv_usec / 1000);
    }
    
    void die(const char *file, int line, const char *message)
    {
      printf("Dead\n");
      fprintf(stderr, "%s:%i: %s\n", file, line, message);
      exit(1);
    }
    
    int sendMessage(pn_messenger_t * messenger) {
        char * address = (char *) "amqps://{SAS Key Name}:{SAS key}@{namespace name}.servicebus.windows.net/{event hub name}";
        char * msgtext = (char *) "Hello from C!";
    
        pn_message_t * message;
        pn_data_t * body;
        message = pn_message();
    
        pn_message_set_address(message, address);
        pn_message_set_content_type(message, (char*) "application/octect-stream");
        pn_message_set_inferred(message, true);
    
        body = pn_message_body(message);
        pn_data_put_binary(body, pn_bytes(strlen(msgtext), msgtext));
    
        pn_messenger_put(messenger, message);
        check(messenger);
        pn_messenger_send(messenger, 1);
        check(messenger);
    
        pn_message_free(message);
    }
    
    int main(int argc, char** argv) {
        printf("Press Ctrl-C to stop the sender process\n");
        signal(SIGINT, interrupt_handler);
    
        pn_messenger_t *messenger = pn_messenger(NULL);
        pn_messenger_set_outgoing_window(messenger, 1);
        pn_messenger_start(messenger);
    
        while(!stop) {
            sendMessage(messenger);
            printf("Sent message\n");
            sleep(1);
        }
    
        // release messenger resources
        pn_messenger_stop(messenger);
        pn_messenger_free(messenger);
    
        return 0;
    }
    
  6. Kompilasikan file, dengan asumsi gcc:

    gcc sender.c -o sender -lqpid-proton
    

    Catatan

    Kode ini menggunakan jendela keluar 1 untuk memaksa pesan keluar sesegera mungkin. Sebaiknya aplikasi Anda mencoba mengumpulkan pesan untuk meningkatkan throughput. Lihat halaman Messenger Qpid AMQP untuk informasi tentang cara menggunakan pustaka Qpid Proton di lingkungan ini dan lainnya, dan dari platform yang disediakan pengikatan (saat ini Perl, PHP, Python, dan Ruby).

Jalankan aplikasi untuk mengirim pesan ke pusat aktivitas.

Selamat! Anda sekarang telah mengirim pesan ke hub acara.

Langkah berikutnya

Baca artikel berikut ini: