第9章 JMS メッセージブローカーで監査データの複製
KIE Server 監査データを Java Message Service (JMS) メッセージブローカー (ActiveMQ、Artemis など) に複製してから、外部データベーススキーマにデータをダンプし、アプリケーションスキーマから監査データを削除して Spring Boot アプリケーションのパフォーマンスを向上することができます。
メッセージブローカーのデータを複製するようにアプリケーションを設定すると、KIE Server でイベントが発生したときにそのイベントの記録は KIE Server データベーススキーマに保存され、メッセージブローカーに送信されます。その後、外部サービスを設定して、メッセージブローカーデータをアプリケーションのデータベーススキーマの正確なレプリカに使用できます。このデータは、イベントが KIE Server によって生成されるたびに、メッセージブローカーおよび外部データベースに追加されます。
監査データのみがメッセージブローカーに保存されます。他のデータはレプリケートされません。
前提条件
- 既存の Red Hat Process Automation Manager Spring Boot プロジェクトがある。
手順
-
テキストエディターで Spring Boot アプリケーションの
pom.xmlファイルを開きます。 KIE Server Spring Boot 監査依存関係を
pom.xmlファイルに追加します。<dependency> <groupId>org.kie</groupId> <artifactId>kie-server-spring-boot-autoconfiguration-audit-replication</artifactId> <version>${version.org.kie}</version> </dependency>JMS クライアントの依存関係を追加します。以下の例では、Advanced Message Queuing Protocol (AMQP) 依存関係を追加します。
<dependency> <groupId>org.amqphub.spring</groupId> <artifactId>amqp-10-jms-spring-boot-starter</artifactId> <version>2.2.6</version> </dependency>
JMS プールの依存関係を追加します。
<dependency> <groupId>org.messaginghub</groupId> <artifactId>pooled-jms</artifactId> </dependency>
KIE Server 監査レプリケーションがキューを使用するように設定するには、以下のタスクを完了します。
以下の行を、Spring Boot アプリケーションの
application.propertiesファイルに追加します。kieserver.audit-replication.producer=true kieserver.audit-replication.queue=audit-queue
メッセージブローカークライアントに必要なプロパティーを追加します。以下の例は、AMPQ に KIE Server を設定する方法を示しています。ここで、
<JMS_HOST_PORT>はブローカーがリッスンするポートで、<USERNAME>および<PASSWORDはブローカーのログイン認証情報になります。amqphub.amqp10jms.remote-url=amqp://<JMS_HOST_PORT> amqphub.amqp10jms.username=<USERNAME> amqphub.amqp10jms.password=<PASSWORD> amqphub.amqp10jms.pool.enabled=true
以下の行を、メッセージブローカーデータを使用するサービスの
application.propertiesファイルに追加します。kieserver.audit-replication.consumer=true kieserver.audit-replication.queue=audit-queue
メッセージブローカークライアントに必要なプロパティーを、メッセージブローカーデータを使用するサービスの
application.propertiesファイルに追加します。以下の例は、AMPQ に KIE Server を設定する方法を示しています。ここで、<JMS_HOST_PORT>はメッセージブローカーがリッスンするポートで、<USERNAME>および<PASSWORD>はメッセージブローカーのログイン認証情報になります。amqphub.amqp10jms.remote-url=amqp://<JMS_HOST_PORT> amqphub.amqp10jms.username=<USERNAME> amqphub.amqp10jms.password=<PASSWORD> amqphub.amqp10jms.pool.enabled=true
KIE Server 監査レプリケーションがトピックを使用するように設定するには、以下のタスクを実行します。
以下の行を、Spring Boot アプリケーションの
application.propertiesファイルに追加します。kieserver.audit-replication.producer=true kieserver.audit-replication.topic=audit-topic
メッセージブローカークライアントに必要なプロパティーを、メッセージブローカーデータを使用するサービスの
application.propertiesファイルに追加します。以下の例は、AMPQ に KIE Server を設定する方法を示しています。ここで、<JMS_HOST_PORT>はメッセージブローカーがリッスンするポートで、<USERNAME>および<PASSWORDはメッセージブローカーのログイン認証情報になります。spring.jms.pub-sub-domain=true amqphub.amqp10jms.remote-url=amqp://<JMS_HOST_PORT> amqphub.amqp10jms.username=<USERNAME> amqphub.amqp10jms.password=<PASSWORD> amqphub.amqp10jms.pool.enabled=true
以下の行を、メッセージブローカーデータを使用するサービスの
application.propertiesファイルに追加します。kieserver.audit-replication.consumer=true kieserver.audit-replication.topic=audit-topic::jbpm kieserver.audit-replication.topic.subscriber=jbpm spring.jms.pub-sub-domain=true
メッセージブローカークライアントに必要なプロパティーを、メッセージブローカーデータを使用するサービスの
application.propertiesファイルに追加します。以下の例は、AMPQ に KIE Server を設定する方法を示しています。ここで、<JMS_HOST_PORT>はメッセージブローカーがリッスンするポートで、<USERNAME>および<PASSWORD>はメッセージブローカーのログイン認証情報になります。amqphub.amqp10jms.remote-url=amqp://<JMS_HOST_PORT> amqphub.amqp10jms.username=<USERNAME> amqphub.amqp10jms.password=<PASSWORD> amqphub.amqp10jms.pool.enabled=true amqphub.amqp10jms.clientId=jbpm
オプション: レプリケートされたデータが含まれる KIE Server を読み取り専用に設定するには、
application.propertiesファイルのorg.kie.server.rest.mode.readonlyプロパティーをtrueに設定します。org.kie.server.rest.mode.readonly=true
9.1. Spring Boot JMS 監査レプリケーションパラメーター
以下の表は、Spring Boot で Red Hat Process Automation Manager アプリケーションの JMS 監査レプリケーションを設定するために使用するパラメーターを説明しています。
表9.1 Spring Boot JMS 監査レプリケーションパラメーター
| パラメーター | 値 | 説明 |
|---|---|---|
|
|
| ビジネスアプリケーションが、JMS メッセージを複製してキューまたはトピックのいずれかに送信するプロデューサーとして動作するかどうかを指定します。 |
|
|
| ビジネスアプリケーションが、キューまたはトピックのいずれかから JMS メッセージを受信するコンシューマーとして動作するかどうかを指定します。 |
|
|
| メッセージを送信または消費する JMS キューの名前。 |
|
|
| メッセージを送信または消費する JMS トピックの名前。 |
|
|
| トピックサブスクライバーの名前。 |
|
|
| ビジネスアプリケーションの読み取り専用モードを指定します。 |