بداية سريعة: إرسال الأحداث إلى Azure Event Hubs باستخدام C.

مقدمة

Azure Event Hubs هي منصة تدفق البيانات الكبيرة وخدمة استيعاب الأحداث، القادرة على تلقي ملايين الأحداث ومعالجتها في الثانية. يمكن لـ Event Hubs معالجة الأحداث أو البيانات أو بيانات تتبع الاستخدام التي تنتجها البرامج والأجهزة الموزعة وتخزينها. يمكن تحويل البيانات المرسلة إلى مركز الحدث وتخزينها باستخدام أي موفر تحليلات يعمل في الوقت الفعلي أو محولات الدفعات / التخزين. للاطلاع على نظرة عامة مفصلة حول Event Hubs، انظر نظرة عامة على ميزاتEvent Hubs.

يصف هذا البرنامج التعليمي كيفية إرسال الأحداث إلى مركز الأحداث باستخدام تطبيق وحدة تحكم في برنامج C.

المتطلبات الأساسية

لإكمال هذا البرنامج التعليمي، تحتاج إلى ما يلي:

  • بيئة تطوير برنامجي A C يفترض هذا البرنامج التعليمي عرض مجموعة مترجمات جنو على Azure Linux VM باستخدام 14.04 Ubuntu.
  • Microsoft Visual Studio.
  • أنشئ مساحة اسم لـ Event Hubs ومركز الأحداث. استخدم مدخل Microsoft Azure لإنشاء مساحة اسم نوع لمراكز الأحداث والحصول على إدارة بيانات الاعتماد لتطبيقك الذي يحتاج إلى الاتصال بمركز الأحداث. لإنشاء مساحة اسم ومركز أحداث، اتبع الإجراء الوارد في هذه المقالة. الحصول على قيمة مفتاح الاختصار لمركز الأحداث باتباع التعليمات من المقال: الحصول على سلسلة الاتصال. يمكنك استخدام مفتاح الاختصار في الرمز الذي تكتبه لاحقاً في هذا البرنامج التعليمي. اسم المفتاح الافتراضي هو: RootManageSharedAccessKey .

كتابة الرمز لإرسال رسائل إلى مراكز الأحداث

في هذا القسم يوضح كيفية كتابة تطبيق برنامج C لإرسال الأحداث إلى مركز الأحداث. يستخدم الرمز Proton AMQP library من مشروع Apache Qpid . هذا مشابه لاستخدام Service Bus queues والمواضيع المتعلقة بـ AMQP من برنامج C كما هو موضح في هذا النموذج. لمزيد من المعلومات، راجع الوثائق الخاصة بـ Qpid Proton.

  1. من صفحة Qpid AMQP Messenger، اتبع التعليمات لتثبيت Qpid Proton حسب البيئة الخاصة بك.

  2. ليحول Proton library برمجياً، يجب تثبيت الحزم التالية:

    sudo apt-get install build-essential cmake uuid-dev openssl libssl-dev
    
  3. نزلQpid Proton library، واستخرجها، على سبيل المثال:

    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. أنشئ دليل البناء وحوله برمجياً وثبته:

    cd qpid-proton-0.7
    mkdir build
    cd build
    cmake -DCMAKE_INSTALL_PREFIX=/usr ..
    sudo make install
    
  5. في دليل العمل الخاص بك، أنشئ ملفاً جديداً باسم المرسل.c وفقاً للرمز التالي. تذكر لاستبدال القيم الخاصة بمفتاح/ اسم SAS واسم مركز الأحداث ومساحة الاسم. يجب أيضا استبدال إصدار URL-encoded الخاص بمفتاح SendRule الـذي تم إنشاؤه سابقاً. يمكنك إيجاد URL-encode هنا.

    #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. حول الملف برمجياً مع افتراضسحابة القطاع الحكومي:

    gcc sender.c -o sender -lqpid-proton
    

    إشعار

    يستخدم هذا الرمز الإطار الصادر من رقم1 لإرسال الرسائل في أقرب وقت ممكن. يُوصي بتجربة التطبيق الخاص بك لدفع الرسائل لزيادة عامل الإنتاجية. راجع صفحة Qpid AMQP Messenger للحصول على معلومات حول كيفية استخدام Qpid Proton library في هذه البيئة وغيرها من البيئات التي تعمل على توفير الارتباطات (Perl وPHP وPython وRuby).

تشغيل التطبيق لإرسال رسائل إلى مركز الأحداث.

تهانينا! لقد أرسلت الآن رسائل إلى "مركز أحداث".

الخطوات التالية

اقرأ المقالات التالية: