各製品の資料を入手。
詳細はこちら →Jetty コネクションプールからKafka のデータに連携。
CData JDBC Driver は、コネクションプーリングをサポートします:本記事では、Jetty のWeb アプリからKafka のデータに連携する手順を説明します。
最終更新日:2023-06-18
この記事で実現できるKafka 連携のシナリオ
こんにちは!ウェブ担当の加藤です。マーケ関連のデータ分析や整備もやっています。
CData JDBC Driver for ApacheKafka は、Java Web アプリケーションに簡単に統合して利用することができます。本記事では、Jetty でドライバーをコネクションプールとして設定することで、効率的にKafka のデータをアプリケーションで連携利用する方法を説明します。Jetty でJNDI resource for ApacheKafka を設定します。
DBC Driver for ApacheKafka を JNDI Data Source として設定
次の手順で、Jetty とKafka の接続を確立します。
Jetty ベースでJNDI モジュールを有効化します。JNDI を有効化するコマンドラインは以下の通り:
java -jar ../start.jar --add-to-startd=jndi
- JDBC Driver の.jar ファイルと.lic ファイル(インストールディレクトリのlib フォルダ下)をcontext path のlib フォルダに配置します。
-
リソースおよびスコープを宣言します。リソース宣言で必要な接続プロパティを入力します。この例では、Kafka のデータソースをWeb アプリケーションのWEB-INF\jetty-env.xml レベルにdeclare しています。
<Configure id='kafkademo' class="org.eclipse.jetty.webapp.WebAppContext"> <New id="kafkademo" class="org.eclipse.jetty.plus.jndi.Resource"> <Arg><Ref refid="kafkademo"/></Arg> <Arg>jdbc/kafkadb</Arg> <Arg> <New class="cdata.jdbc.apachekafka.ApacheKafkaDriver"> <Set name="url">jdbc:apachekafka:</Set> <Set name="User">admin</Set> <Set name="Password">pass</Set> <Set name="BootStrapServers">https://localhost:9091</Set> <Set name="Topic">MyTopic</Set> </New> </Arg> </New> </Configure>
Apache Kafka 接続プロパティの取得・設定方法
.NET ベースのエディションは、Confluent.Kafka およびlibrdkafka ライブラリに依存して機能します。 これらのアセンブリはインストーラーにバンドルされ、自動的に本製品と一緒にインストールされます。 別のインストール方法を利用する場合は、NuGet から依存関係のあるConfluent.Kafka 2.6.0 をインストールしてください。
Apache Kafka サーバーのアドレスを指定するには、BootstrapServers パラメータを使用します。
デフォルトでは、本製品はデータソースとPLAINTEXT で通信し、これはすべてのデータが暗号化なしで送信されることを意味します。 通信を暗号化するには:
- UseSSL をtrue に設定し、本製品がSSL 暗号化を使用するように構成します。
- SSLServerCert およびSSLServerCertType を設定して、サーバー証明書をロードします。
Apache Kafka への認証
Apache Kafka データソースは、次の認証メソッドをサポートしています:- Anonymous
- Plain
- SCRAM ログインモジュール
- SSL クライアント証明書
- Kerberos
Anonymous
Apache Kafka の特定のオンプレミスデプロイメントでは、認証接続プロパティを設定することなくApache Kafka に接続できます。 こうした接続はanonymous(匿名)と呼ばれます。
匿名認証を行うには、このプロパティを設定します。
- AuthScheme:None。
その他の認証方法については、ヘルプドキュメントを参照してください。
-
Web xml でリソースを設定します:
jdbc/kafkadb javax.sql.DataSource Container -
これで、java:comp/env/jdbc/kafkadb へのルックアップでKafka のデータにアクセスできます:
InitialContext ctx = new InitialContext(); DataSource mykafka = (DataSource)ctx.lookup("java:comp/env/jdbc/kafkadb");
Jetty にさらに統合
ここでは、シンプルなコネクションプーリングシナリオでのドライバーの接続について説明しました。追加での連携ケースについては、Jetty ドキュメントのWorking with Jetty JNDI 参照してください。