Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wprowadzenie
Azure Event Hubs to platforma do pozyskiwania i strumieniowego przesyłania danych, która umożliwia odbieranie i przetwarzanie milionów zdarzeń na sekundę. Usługa Event Hubs pozwala przetwarzać i przechowywać zdarzenia, dane lub dane telemetryczne generowane przez rozproszone oprogramowanie i urządzenia. Dane wysłane do centrum zdarzeń mogą zostać przekształcone i zmagazynowane przy użyciu dowolnego dostawcy analityki czasu rzeczywistego lub adapterów przetwarzania wsadowego/magazynowania. Aby zapoznać się ze szczegółowym omówieniem usługi Event Hubs, zobacz Omówienie usługi Event Hubs i Funkcje usługi Event Hubs.
W tym samouczku opisano sposób wysyłania zdarzeń do centrum zdarzeń przy użyciu aplikacji konsolowej w języku C.
Wymagania wstępne
Do ukończenia tego samouczka są potrzebne są następujące elementy:
- Środowisko programistyczne języka C. W tym samouczku założono, że stos gcc na maszynie wirtualnej z systemem Linux platformy Azure z systemem Ubuntu 14.04.
- Microsoft Visual Studio.
- Utwórz przestrzeń nazw usługi Event Hubs i centrum zdarzeń. Użyj witryny Azure Portal, aby utworzyć przestrzeń nazw typu Event Hubs i uzyskać poświadczenia zarządzania, które aplikacja musi komunikować się z centrum zdarzeń. Aby utworzyć przestrzeń nazw i centrum zdarzeń, wykonaj procedurę opisaną w tym artykule. Pobierz wartość klucza dostępu dla centrum zdarzeń, postępując zgodnie z instrukcjami z artykułu: Pobieranie parametry połączenia. W dalszej części tego samouczka użyjesz klucza dostępu w kodzie, który napiszesz w dalszej części tego samouczka. Domyślna nazwa klucza to : RootManageSharedAccessKey.
Pisanie kodu służącego do wysyłania komunikatów do usługi Event Hubs
W tej sekcji pokazano, jak napisać aplikację języka C w celu wysyłania zdarzeń do centrum zdarzeń. Kod korzysta z biblioteki Proton AMQP z projektu Apache Qpid. Jest to analogiczne do używania kolejek i tematów usługi Service Bus z funkcją AMQP z języka C, jak pokazano w tym przykładzie. Aby uzyskać więcej informacji, zobacz dokumentację Qpid Proton.
Na stronie Qpid AMQP Messenger postępuj zgodnie z instrukcjami, aby zainstalować Qpid Proton, w zależności od środowiska.
Aby skompilować bibliotekę Proton, zainstaluj następujące pakiety:
sudo apt-get install build-essential cmake uuid-dev openssl libssl-dev
Pobierz bibliotekę Qpid Proton i wyodrębnij ją, np.:
wget https://archive.apache.org/dist/qpid/proton/0.7/qpid-proton-0.7.tar.gz tar xvfz qpid-proton-0.7.tar.gz
Utwórz katalog kompilacji, skompiluj i zainstaluj:
cd qpid-proton-0.7 mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=/usr .. sudo make install
W katalogu służbowym utwórz nowy plik o nazwie sender.c z następującym kodem. Pamiętaj, aby zastąpić wartości klucza/nazwy sygnatury dostępu współdzielonego, nazwy centrum zdarzeń i przestrzeni nazw. Musisz również zastąpić zakodowaną wcześniej wersję klucza zakodowaną pod adresem URL dla utworzonego wcześniej elementu SendRule . W tym miejscu możesz kodować adres URL.
#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; }
Skompiluj plik przy założeniu, że gcc:
gcc sender.c -o sender -lqpid-proton
Uwaga
Ten kod używa okna wychodzącego 1, aby wymusić wyświetlanie komunikatów tak szybko, jak to możliwe. Zaleca się, aby aplikacja próbowała wsadować komunikaty wsadowe w celu zwiększenia przepływności. Zobacz stronę Qpid AMQP Messenger, aby uzyskać informacje na temat korzystania z biblioteki Qpid Proton w tym i innych środowiskach oraz z platform, dla których podano powiązania (obecnie Perl, PHP, Python i Ruby).
Uruchom aplikację, aby wysyłać komunikaty do centrum zdarzeń.
Gratulacje! Wysłano komunikaty do centrum zdarzeń.
Następne kroki
Zapoznaj się z następującymi artykułami: