Azure EventHubにHttpでイベントを投げる

Azure EventHubは入力のプロトコルとしてAMQPとHttpsをサポートしています。AMQPは永続通信なので通信が頻繁に発生する場合はAMQPのほうがいいのですがAMQPがすべてのデバイスにSDKが提供されているわけではないので、IoTなどを考えたときHttpでEventHubに投げたくなります。

今回はその手順をnode.jsでやってみました。

すでにEventHubが作成されていてnode.jsを実行できる環境を想定しています。

SAS Tokenを作成する

httpでEventHubに投げるには、まずSAS Tokenを作成する必要があります。

詳しくはこちらのドキュメントをみてください。

今回はnode.jsのサンプルコードを記載しておきます。

endpoint、sharedAccessKeyName、sharedAccessKeyの3つのパラメータについてはEventhub名前空間の接続文字列に記載されています。

上記コードを実行して得られたSharedAccessSignatureから始まる文字列がSAS Tokenです。

node.jsからイベントを送信する

requestパッケージを利用するのでnpm install requestをしておいてください。

http通信ですが、基本的にheaderのContentTypeに下記コード参照のパラメータを、Authorizationにsas tokenを乗せて、送りたいイベントをjsonとしてpostすればOKです。

詳しくは公式のドキュメントをみてください。

EventHubに送信されたことを確認する

EventHubにデータが送信されていることを確認するには、Azureポータルからではなかなか難しいです。

そこでサードパーティのツールを利用します。

ServiceBusExplorerというものを利用することでEventHubに流れてくるイベントをリッスンすることができます。

次回はStreamAnalyticsとつなげます