Outlook のデータをApache Kafka トピックにストリーミング

Dibyendu Datta
Dibyendu Datta
Lead Technology Evangelist
CData JDBC Driver とKafka Connect JDBC コネクタを使用して、Apache Kafka でOutlook のデータにアクセスし、ストリーミングできます。

Apache Kafka は、主にリアルタイムデータパイプラインやイベント駆動型アプリケーションの構築に使用されるオープンソースのストリーム処理プラットフォームです。CData API Driver for JDBCと組み合わせることで、Kafka はライブのOutlook のデータを扱うことができます。この記事では、Outlook データをApache Kafka トピックに接続、アクセス、ストリーミングする方法と、Confluent Control Center を起動してConfluent プラットフォームのKafka インフラストラクチャを使用して受信したOutlook のデータをユーザーが安全に管理および監視できるようにする方法について説明します。

CData JDBC Driver は最適化されたデータ処理機能を内蔵しており、ライブのOutlook のデータとのやり取りにおいて比類のないパフォーマンスを提供します。Outlook に複雑なSQL クエリを発行すると、ドライバーはフィルタや集計などのサポートされているSQL 操作を直接Outlook にプッシュし、サポートされていない操作(多くの場合SQL 関数やJOIN 操作)については組み込みのSQL エンジンを使用してクライアント側で処理します。組み込みの動的メタデータクエリにより、ネイティブのデータ型を使用してOutlook のデータを操作および分析できます。

前提条件

Apache Kafka トピックでOutlook のデータをストリーミングするためにCData JDBC Driver を接続する前に、クライアントのLinux ベースのシステムに以下をインストールおよび設定してください。

  1. Confluent Platform for Apache Kafka
  2. Confluent Hub CLI のインストール
  3. Confluent Platform 用のSelf-Managed Kafka JDBC Source Connector

Outlook のデータへの新しいJDBC 接続を定義

  1. Linux ベースのシステムにCData API Driver for JDBCをダウンロードします。
  2. 以下の手順に従って新しいディレクトリを作成し、すべてのドライバーの内容を展開します:
    1. Outlook という名前の新しいディレクトリを作成します。
      		mkdir API
      		
    2. ダウンロードしたドライバーファイル(.zip)をこの新しいディレクトリに移動します。
      		mv APIJDBCDriver.zip API/
      		
    3. CData APIJDBCDriver の内容をこの新しいディレクトリに解凍します。
      		unzip APIJDBCDriver.zip
      		
  3. Outlook ディレクトリを開き、lib フォルダに移動します。
    ls
    cd lib/
    
  4. CData API Driver for JDBClib フォルダの内容をKafka Connect JDBClib フォルダにコピーします。Kafka Connect JDBC フォルダの内容を確認し、cdata.jdbc.api.jar ファイルがlib フォルダに正常にコピーされたことを確認します。
    cp -r /path/to/CData API Driver for JDBC/lib/* /usr/share/confluent-hub-components/confluentinc-kafka-connect-jdbc/lib/
    cd /usr/share/confluent-hub-components/confluentinc-kafka-connect-jdbc/lib/
    
  5. 以下のコマンドを使用して、CData Outlook JDBC ドライバーのライセンスをインストールします。名前とメールアドレスを入力してください。
    	java -jar cdata.jdbc.api.jar -l
    	
  6. プロダクトキーまたは"TRIAL" を入力します(ライセンスの有効期限が切れた場合は、CData サポートチームまでお問い合わせください)。
  7. 以下のコマンドを使用してConfluent ローカルサービスを起動します:
    	confluent local services start
    	

    これにより、Zookeeper、Kafka、Schema Registry、Kafka REST、Kafka CONNECT、ksqlDB、Control Center などのすべてのConfluent サービスが起動します。これで、CData JDBC Driver for Outlook を使用してKafka Connect Driver 経由でksqlDB のKafka トピックにメッセージをストリーミングする準備が整いました。

    Confluent ローカルサービスを起動
  8. POST HTTP API リクエストを使用してKafka トピックを手動で作成します:
     curl --location 'server_address:8083/connectors'
    	--header 'Content-Type: application/json'
    	--data '{ 
    		"name": "jdbc_source_cdata_api_01", 
    		"config": { 
    			"connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector", 
    			"connection.url": "jdbc:api:Profile=C:\profiles\Outlook.apip;AuthScheme=OAuth;InitiateOAuth=GETANDREFRESH;OAuthClientId=your_client_id;OAuthClientSecret=your_client_secret;TenantId=your_tenant_id;CallbackUrl=http://localhost:33333;",
    		"topic.prefix": "api-01-", 
    		"mode": "bulk" 
    		} 
    	}'
    

    HTTP POST 本文(上記)で使用されるフィールドについて説明します:

    • connector.class: 使用するKafka Connect コネクタのJava クラスを指定します。
    • connection.url: Outlook データに接続するためのJDBC 接続URL です。

      組み込みの接続文字列デザイナー

      JDBC URL の作成については、CData API Driver for JDBCに組み込まれた接続文字列デザイナーを使用してください。JAR ファイルをダブルクリックするか、コマンドラインからjar ファイルを実行します。

      		java -jar cdata.jdbc.api.jar
      		

      接続プロパティを入力し、接続文字列をクリップボードにコピーします。

      OAuth 認証の設定

      Microsoft Graph API は認証に OAuth 2.0 を使用します。OAuth 認証情報(Client ID と Client Secret)を取得するには、Microsoft Azure Portal でアプリケーションを登録する必要があります。

      OAuth 認証情報の取得

      1. Azure Portal にログインします。
      2. Azure Active Directory > App registrations に移動します。
      3. New registration をクリックして新しいアプリケーションを作成します。
      4. アプリケーション名を入力し、適切なアカウントの種類を選択します。
      5. Redirect URI をアプリケーションのコールバック URL に設定します(デスクトップアプリの場合は http://localhost:33333 など)。
      6. Register をクリックしてアプリケーションを作成します。
      7. アプリケーションの概要ページで Application (client) ID をコピーします。これが OAuthClientId になります。
      8. Certificates & secrets に移動して、新しいクライアントシークレットを作成します。
      9. クライアントシークレットの値をコピーします。これが OAuthClientSecret になります。
      10. API permissions に移動して、必要な Microsoft Graph API の権限を追加します:
        • Mail.Read - メールメッセージへのアクセス用
        • Contacts.Read - 連絡先へのアクセス用
        • Calendars.Read - カレンダーイベントへのアクセス用
        • Tasks.Read - To Do タスクへのアクセス用
        • offline_access - リフレッシュトークンの取得用
      11. Grant admin consent をクリックして、これらの権限を付与します。

      OAuth での接続

      以下の接続プロパティを設定して接続を確立してください:

      • AuthScheme:OAuth に設定します。
      • InitiateOAuthGETANDREFRESH に設定します。CData API Profile for Outlook が OAuth プロセスを自動的に進め、アクセストークンを取得します。
      • OAuthClientId:Azure Portal の Application (client) ID に設定します。
      • OAuthClientSecret:Azure Portal のクライアントシークレットの値に設定します。
      • TenantId:Azure AD のテナント識別子(GUID または 'contoso.onmicrosoft.com' のようなドメイン名)に設定します。
      • CallbackURL:アプリ登録で指定したリダイレクト URI に設定します(デスクトップアプリの場合は http://localhost:33333 など)。

      接続文字列の例

      Profile=C:\profiles\Outlook.apip;AuthScheme=OAuth;InitiateOAuth=GETANDREFRESH;OAuthClientId=your_client_id;OAuthClientSecret=your_client_secret;TenantId=your_tenant_id;CallbackUrl=http://localhost:33333;
      
      組み込みの接続文字列デザイナーを使用してJDBC URL を生成(Salesforce の例)
    • topic.prefix: コネクタによって作成されるKafka トピックに追加されるプレフィックスです。「api-01-」に設定されています。
    • mode: コネクタの動作モードを指定します。ここでは「bulk」に設定されており、コネクタがバルクデータ転送を実行するように設定されていることを示しています。

    このリクエストにより、Outlook のすべてのテーブル/コンテンツがKafka トピックとして追加されます。

    注意: リクエストをPOST するIP アドレス(サーバー)は、Linux ネットワークのIP アドレスです。

  9. ksqlDB を実行し、トピックを一覧表示します。以下のコマンドを使用します:
    ksql
    list topics;
    
    Kafka トピックを一覧表示(BigCommerce の例)
  10. トピック内のデータを表示するには、以下のSQL ステートメントを入力します:
    PRINT topic FROM BEGINNING;
    

Confluent Control Center への接続

Confluent Control Center のユーザーインターフェースにアクセスするには、上記のセクションで説明した"confluent local services" を実行し、ローカルブラウザでhttp://<server address>:9021/clusters/ と入力してください。

Confluent Control Center に接続

おわりに

CData API Driver for JDBCの30日間無償トライアルをダウンロードして、Outlook データをApache Kafka にストリーミングしましょう。ご不明な点があれば、サポートチームまでお問い合わせください。

はじめる準備はできましたか?

API Driver で Outlook のライブデータに接続

Outlook に接続