Nablarch Application Frameworkのデータベースのテーブルをキューとして扱うメッセージング処理のExampleです。
このExampleでは、 INS_PROJECT_RECEIVE_MESSAGE
テーブルをキューとして扱い、定期的に監視します。
キュー内に未処理のデータが存在した場合、そのデータを PROJECT
テーブルへと移送します。
実行環境に以下のソフトウェアがインストールされている事を前提とします。
- Java Version : 17
- Maven 3.9.9以降
なお、このアプリケーションはH2 Database Engineを組み込んでいます。別途DBサーバのインストールは必要ありません。
Gitを使用している場合、アプリケーションを配置したいディレクトリにて「git clone」コマンドを実行してください。 以下、コマンドの例です。
$mkdir c:\example
$cd c:\example
$git clone https://github.com/nablarch/nablarch-example-db-queue.git
Gitを使用しない場合、最新のタグからzipをダウンロードし、任意のディレクトリへ展開してください。
次に、アプリケーションをビルドします。以下のコマンドを実行してください。
$cd nablarch-example-db-queue
$mvn clean package
実行に成功すると、以下のようなログがコンソールに出力されます。
(中略)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
(中略)
アプリケーションを実行するためにはデータベースのセットアップ及びエンティティクラスの作成が必要ですが、これはmvn package
の実行に含まれています。この処理はmvn generate-resources
で個別に実行することもできます。
※gspプラグインをJava 17で実行するためにはJVMオプションの指定が必要ですが、そのオプションは.mvn/jvm.config
で指定しています。
以下のコマンドでアプリケーションを起動します。
$mvn exec:java -Dexec.mainClass=nablarch.fw.launcher.Main -Dexec.args="'-diConfig' 'com/nablarch/example/app/batch/project-creation-service.xml' '-requestPath' 'ProjectCreationService' '-userId' 'samp'"
なお、 maven-assembly-plugin
を使用して実行可能jarの生成を行っているため、以下のコマンドでもアプリケーションを実行することが可能です。
-
target/application-<version_no>.zip
を任意のディレクトリに解凍する。 -
以下のコマンドにて実行する
$java -jar <1で解凍したディレクトリ名>/nablarch-example-db-queue-<version_no>.jar -diConfig com/nablarch/example/app/batch/project-creation-service.xml -requestPath ProjectCreationService -userId sample
-
https://www.h2database.com/html/download.html からH2をインストールしてください。
-
{インストールフォルダ}/bin/h2.bat を実行してください(コマンドプロンプトが開く)。 ※h2.bat実行中はExampleアプリケーションからDBへアクセスすることができないため、Exampleアプリケーションを停止しておいてください。
-
ブラウザから http://localhost:8082 を開き、以下の情報でH2コンソールにログインしてください。 JDBC URLの{dbファイルのパス}には、
nablarch_example_db_queue.mv.db
ファイルの格納ディレクトリまでのパスを指定してください。
JDBC URL:jdbc:h2:{dbファイルのパス}/nablarch_example_db_queue
ユーザ名:SAMPLE
パスワード:SAMPLE
監視対象テーブルのINS_PROJECT_RECEIVE_MESSAGE
にデータを投入することで、
プロジェクトテーブルにデータが作成されます。
(本ExampleアプリケーションではDBにH2を使用しているため、
アプリケーション起動中に別のプロセスからDBを操作することができません。
そのため、アプリケーションを停止し、「5. DBの確認方法」を参考にH2コンソールからデータを投入してください。)
投入SQLの例
insert into ins_project_receive_message (
received_message_sequence,
project_name,
project_type,
project_class,
project_start_date,
project_end_date,
client_id,
project_manager,
project_leader,
user_id,
note,
sales,
cost_of_goods_sold,
sga,
allocation_of_corp_expenses,
status
) values (
'0000000002',
'プロジェクト名',
'development',
'分類',
'2011-01-01',
'2020-12-31',
1,
'admin',
'user1',
1,
' ',
100,
200,
300,
400,
'0'
)
アプリケーションは自動で終了しないので、プロセスを強制終了(Ctrl + C)してください。 ※プロダクション環境では、プロセス停止ハンドラを使うことで安全にプロセスを終了できます。