第21章 トランザクションのコミット時に Kafka メッセージを生成するようにサービスおよび KIE Server を設定する
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 形式で表示されるプロセス、ケース、またはタスクに関する情報
手順
Kafka メッセージを生成するには、以下のいずれかの手順を実行します。
KIE Server を Red Hat JBoss EAP または別のアプリケーションサーバーにデプロイした場合:
-
Red Hat カスタマーポータルの Software Downloads ページから製品配信可能ファイル
rhpam-7.10.0-maven-repository.zipをダウンロードします。 - ファイルの内容を展開します。
-
maven-repository/org/jbpm/jbpm-event-emitters-kafka/7.48.0.Final-redhat-00004/jbpm-event-emitters-kafka-7.48.0.Final-redhat-00004.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>
必要に応じて、KIE Server の以下のシステムプロパティーのいずれかを設定します。
-
org.kie.jbpm.event.emitters.kafka.bootstrap.servers: Kafka ブローカーのホストおよびポート。デフォルト値はlocalhost:9092です。複数の host:port ペアのコンマ区切りリストを使用できます。 -
org.kie.jbpm.event.emitters.kafka.date_format: メッセージのtimeフィールドのタイムスタンプ形式。デフォルト値はyyyy-MM-dd'T'HH:mm:ss.SSSZです。 -
org.kie.jbpm.event.emitters.kafka.topic.processes: プロセスイベントメッセージのトピック名。デフォルト値はjbpm-processes-eventsです。 -
org.kie.jbpm.event.emitters.kafka.topic.cases: プロセスイベントメッセージのトピック名。デフォルト値はjbpm-cases-eventsです。 -
org.kie.jbpm.event.emitters.kafka.topic.tasks: プロセスイベントメッセージのトピック名。デフォルト値はjbpm-processes-tasksです。 -
org.kie.jbpm.event.emitters.kafka.client.id: リクエストの実行時にサーバーに渡す ID 文字列。サーバーは、この文字列をロギングに使用します。
-