第23章 トランザクションのコミット時に 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.11.0-maven-repository.zip
をダウンロードします。 - ファイルの内容を展開します。
-
maven-repository/org/jbpm/jbpm-event-emitters-kafka/7.52.0.Final-redhat-00007/jbpm-event-emitters-kafka-7.52.0.Final-redhat-00007.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 文字列。サーバーは、この文字列をロギングに使用します。
-