第23章 トランザクションのコミット時に Kafka メッセージを送信するようにサービスおよび KIE Server を設定する
KIE Server には、Kafka メッセージを自動的に送信する エミッター を設定できます。この場合、KIE Server は、タスク、プロセス、ケース、または変数が作成、更新、または削除されるたびにメッセージを送信します。Kafka メッセージには、変更されたオブジェクトに関する情報が含まれます。変更を使用してトランザクションをコミットすると、KIE Server がメッセージを送信します。
この機能は、ビジネスプロセスまたはケースと合わせて使用できます。プロセス設計で何も変更する必要はありません。
この設定は、SpringBoot を使用してプロセスサービスを実行する場合にも利用できます。
デフォルトでは、KIE Server は以下のトピックでメッセージを公開します。
-
完了したプロセスに関するメッセージ用の
jbpm-processes-events -
完了したタスクに関するメッセージ用の
jbpm-tasks-events -
完了したケースに関するメッセージ用の
jbpm-cases-events
トピック名を設定できます。
公開されているメッセージは、CloudEvents specification バージョン 1.0 に準拠しています。各メッセージには以下のフィールドが含まれます。
-
id: イベントの一意識別子 -
type: イベントのタイプ (プロセス、タスク、またはケース) -
source: URI となるイベントソース -
time: デフォルトでは、RFC3339 形式のイベントのタイムスタンプ -
data: JSON 形式で表示されるプロセス、ケース、またはタスクに関する情報
前提条件
- KIE Server のインスタンスがインストールされています。
手順
Kafka メッセージを自動的に送信するには、次のいずれかの作業を行います。
Red Hat JBoss EAP または別のアプリケーションサーバーに KIE Server をデプロイした場合は、以下の手順を実行します。
-
Red Hat カスタマーポータルの Software Downloads ページから、製品配信可能ファイル
rhpam-7.13.4-maven-repository.zipをダウンロードします。 - ファイルの内容を展開します。
-
maven-repository/org/jbpm/jbpm-event-emitters-kafka/7.67.0.Final-redhat-00024/jbpm-event-emitters-kafka-7.67.0.Final-redhat-00024.jarファイルをアプリケーションサーバーのdeployments/kie-server.war/WEB-INF/libサブディレクトリーにコピーします。
-
Red Hat カスタマーポータルの Software Downloads ページから、製品配信可能ファイル
SpringBoot を使用してアプリケーションをデプロイした場合は、サービスの
pom.xmlファイルの<dependencies>リストに以下の行を追加します。<dependency> <groupId>org.jbpm</groupId> <artifactId>jbpm-event-emitters-kafka</artifactId> <version>${version.org.kie}</version> </dependency><dependency> <groupId>org.jbpm</groupId> <artifactId>jbpm-event-emitters-kafka</artifactId> <version>${version.org.kie}</version> </dependency>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
必要に応じて、以下の KIE Server システムプロパティーのいずれかを設定します。
Expand 表23.1 Kafka エミッターに関連する KIE Server のシステムプロパティー プロパティー 説明 デフォルト値 org.kie.jbpm.event.emitters.kafka.bootstrap.servers:Kafka ブローカーのホストとポート。複数の host:port ペアのコンマ区切りリストを使用できます。
localhost:9092org.kie.jbpm.event.emitters.kafka.date_format:メッセージの
timeフィールドのタイムスタンプ形式。yyyy-MM-dd’T’HH:mm:ss.SSSZorg.kie.jbpm.event.emitters.kafka.topic.processesプロセスイベントメッセージのトピック名。
jbpm-processes-eventsorg.kie.jbpm.event.emitters.kafka.topic.casesケースイベントメッセージのトピック名。
jbpm-cases-eventsorg.kie.jbpm.event.emitters.kafka.topic.tasksタスクイベントメッセージのトピック名。
jbpm-processes-tasksorg.kie.jbpm.event.emitters.kafka.client.idリクエスト時にサーバーに渡す ID 文字列。サーバーは、この文字列をロギングに使用します。
org.kie.jbpm.event.emitters.kafka.property_nameこの接頭辞を使用して、Red Hat AMQ Streams のコンシューマーあるいはプロデューサーのプロパティーを設定します。たとえば、
buffer.memoryプロデューサープロパティーの値を設定するには、KIE Server システムプロパティーorg.kie.jbpm.event.emitters.kafka.buffer.memoryを設定します。この設定は、KIE Server が、トランザクションの完了時に Kafka メッセージを自動的に送信するエミッターを使用して設定されている場合に適用されます。
Red Hat AMQ Streams コンシューマーおよびプロデューサープロパティーの一覧は、RHEL の AMQ Streams の使用 の付録 コンシューマー設定パラメーター および プロデューサー設定パラメーター を参照してください。
org.kie.jbpm.event.emitters.eagerInitデフォルトでは、KIE Server はメッセージ送信時のみ Kafka エミッターを初期化します。KIE Server の起動時に Kafka エミッターを初期化したい場合は、このプロパティーを
trueに設定します。KIE Server が Kafka エミッターを初期化する際、Kafka エミッターの設定にエラーがあった場合や Kafka の通信エラーがあった場合はログに記録されます。
org.kie.jbpm.event.emitters.eagerInitプロパティーをtrueに設定すると、KIE Server 起動時にこのようなエラーがログ出力に表示されるようになります。false