Rychlý start: Odesílání událostí do služby Azure Event Hubs pomocí jazyka C
Úvod
Azure Event Hubs je platforma pro streamování velkých objemů dat a služba pro ingestování událostí, která je schopná přijmout a zpracovat miliony událostí za sekundu. Služba Event Hubs dokáže zpracovávat a ukládat události, data nebo telemetrické údaje produkované distribuovaným softwarem a zařízeními. Data odeslaná do centra událostí je možné transformovat a uložit pomocí libovolného poskytovatele analýz v reálném čase nebo adaptérů pro dávkové zpracování a ukládání. Podrobnější přehled služby Event Hubs najdete v tématech Přehled služby Event Hubs a Funkce služby Event Hubs.
Tento kurz popisuje, jak odesílat události do centra událostí pomocí konzolové aplikace v jazyce C.
Požadavky
K dokončení tohoto kurzu potřebujete:
- Vývojové prostředí jazyka C. Tento kurz předpokládá zásobník gcc na virtuálním počítači Azure s Linuxem s Ubuntu 14.04.
- Microsoft Visual Studio.
- Vytvořte obor názvů služby Event Hubs a centrum událostí. Pomocí webu Azure Portal vytvořte obor názvů typu Event Hubs a získejte přihlašovací údaje pro správu, které vaše aplikace potřebuje ke komunikaci s centrem událostí. Pokud chcete vytvořit obor názvů a centrum událostí, postupujte podle pokynů v tomto článku. Získejte hodnotu přístupového klíče pro centrum událostí podle pokynů v článku: Získání připojovací řetězec. Přístupový klíč použijete v kódu, který napíšete později v tomto kurzu. Výchozí název klíče je: RootManageSharedAccessKey.
Napsání kódu pro odesílání zpráv do služby Event Hubs
V této části se dozvíte, jak napsat aplikaci jazyka C pro odesílání událostí do centra událostí. Kód používá knihovnu Proton AMQP z projektu Apache Qpid. Je to podobné použití front a témat služby Service Bus s AMQP z jazyka C, jak je znázorněno v této ukázce. Další informace najdete v dokumentaci Qpid Proton.
Na stránce Qpid AMQP Messenger podle pokynů nainstalujte Qpid Proton v závislosti na vašem prostředí.
Chcete-li zkompilovat knihovnu Proton, nainstalujte následující balíčky:
sudo apt-get install build-essential cmake uuid-dev openssl libssl-dev
Stáhněte si knihovnu Qpid Proton a extrahujte ji, například:
wget https://archive.apache.org/dist/qpid/proton/0.7/qpid-proton-0.7.tar.gz tar xvfz qpid-proton-0.7.tar.gz
Vytvořte adresář sestavení, zkompilujte a nainstalujte:
cd qpid-proton-0.7 mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=/usr .. sudo make install
V pracovním adresáři vytvořte nový soubor s názvem sender.c s následujícím kódem. Nezapomeňte nahradit hodnoty pro klíč/název SAS, název centra událostí a obor názvů. Musíte také nahradit dříve vytvořenou verzi klíče zakódovanou adresou URL klíče. Tady ji můžete zakódovat pomocí adresy 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; }
Zkompilujte soubor za předpokladu, že gcc:
gcc sender.c -o sender -lqpid-proton
Poznámka:
Tento kód používá odchozí okno 1 k vynucení co nejdříve odchozích zpráv. Doporučuje se, aby se vaše aplikace pokusila dávkové zprávy zvýšit propustnost. Informace o tom, jak používat knihovnu Qpid Proton v tomto a dalších prostředích, a na platformách, pro které jsou k dispozici vazby (aktuálně Perl, PHP, Python a Ruby), najdete na stránce Qpid AMQP Messenger.
Spuštěním aplikace odešlete zprávy do centra událostí.
Gratulujeme! Nyní jste odeslali zprávy do centra událostí.
Další kroky
Přečtěte si následující články: