CSV・Excelダウンロードを非同期に実行することができます。

メッセージングミドルウェア Rabbit MQ が起動している必要があります。Rabbit MQ は Wagby に同梱されていません。別途インストールを行ってください。

環境 > アプリケーションを開きます。メッセージキュー設定欄の「メッセージジョブ機能を使用する」を有効にします。

図1 環境設定

インストールされた Rabbit MQ の情報を設定します。

設定欄説明
RabbitMQホスト名ホスト名を指定します。未指定時はlocalhost。
RabbitMQポート番号未指定時は5672。
RabbitMQユーザ名未指定時はguest。
RabbitMQパスワード未指定時はguest。
使用するキューの名前標準は空白とする。カスタマイズしてメッセージキュー名を指定したい場合に指定する。
ジョブを受信するキューの名前標準は空白とする。カスタマイズしてメッセージキュー名を指定したい場合に指定する。

ホスト名、ポート番号、ユーザ名、パスワードの設定は、ビルドしたアプリケーションの WEB-INF/classes/application.properties に出力されます。

spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

キュー名はビルドしたアプリケーションの WEB-INF/wagby-servlet/jfcMessageQueue.xml に出力されます。 キュー名の未指定時(空白設定)は、標準では "wagbyJobQueue" という名前のキューが用意されます。

具体的には「使用するキューの名前」は rabbit:queue へ、「ジョブを受信するキューの名前」は rabbit:listener の queues に反映されます。

   <rabbit:queue name="wagbyJobQueue"/>
   <rabbit:queue name="wagbyUploadUpdateJobQueue"/>

   <rabbit:listener-container connection-factory="rabbitConnectionFactory">
       <rabbit:listener
         queues="wagbyJobQueue,wagbyUploadUpdateJobQueue"
         ref="JobExecutionMessageListener" method="processQueue"/>
   </rabbit:listener-container>

ダウンロード画面の設定

対象モデルの "画面 > ダウンロード" を開きます。次の設定を行います。

図2 ダウンロードの設定
設定欄説明
ダウンロード画面"画面を作成する" を有効にする。
ダウンロードジョブ"ダウンロードジョブを作成する" を有効にする。
"ダウンロード画面でメッセージジョブ機能を使用する" を有効にする。
ダウンロードジョブ > 送信先キュー名ダウンロードジョブ実行時、このジョブメッセージを送信する (Rabbit MQ の)キュー名を指定する。標準は空白とする。空白時は wagbyJobQueue が設定される。

Rabbit MQ が起動していることを確認後、Wagby アプリケーションを起動してください。

ダウンロード画面でダウンロードボタンを押下すると、ダウンロード処理のジョブが(Rabbit MQ のキューに)登録されます。

図3 ジョブ登録完了

その後、キューに格納された順にジョブが実行されます。

ジョブが登録されると、状態は "待機" となります。ジョブの実行が開始されると、状態は "実行中" となります。

「全体数」は作成されるデータの件数の総数です。「進捗」は現在の処理件数を表します。

データのダウンロード

ジョブの実行が完了すると、状態が "終了" となります。このジョブに対応する行をマウスでクリックすることで、ファイルをダウンロードできます。

Rabbit MQ が起動していなかった場合

RabbitMQが起動していないと、次のようなエラーがログファイル(system.log)に出力されます。

[ERROR org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer redeclareElementsIfNecessary] Failed to check/redeclare auto-delete queue(s). org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection refused: connect