intra-mart Accel Platform 非同期仕様書 第6版 2021-08-01

設定

保存場所

非同期処理機能で使用するデータはシステムデータベースの以下のテーブルに保存されます。

この内容は、たとえintra-mart Accel Platformが稼働していない状態であっても編集しないようにしてください。

注意

intra-mart Accel Platform停止中にシステムデータベースの非同期処理機能で使用するデータを削除した場合、登録されたタスクが実行されなくなってしまいます。

実行エンジン(共通)

task-runner-config.xml

  • task-runner-config

    • max-threads

      同時実行可能なタスクの数を指定します。

    • round-interval

      タスクキュー管理サービスに対して実行可能なタスクメッセージを問い合わせる間隔を秒単位で指定します。

    • status-management-enabled

      実行エンジンの稼働状況を監視する機能の有効、無効を指定します。デフォルトの設定値はtrueです。

      • trueを設定した場合、監視機能を有効にします。
      • falseを設定した場合、監視機能を無効にします。

      【属性】

      • checkin-interval

        実行エンジンの稼働状況の監視間隔をミリ秒単位で指定します。デフォルトの設定値は10000(10秒)です。

      • checkin-delay-limit

        実行エンジンからの応答の最大遅延時間をミリ秒単位で指定します。デフォルトの設定値は10000(10秒)です。

注意

max-threads は、タスク処理サービスが実行されているサーバに対する設定値です。
システム全体に対する設定値ではありません。
システム全体で同時に実行できるタスク数は、以下のように求めることができます。
  • max-threads の設定値 × タスク処理サービスが実行されているサーバ台数

コラム

実行エンジンの稼働状況の監視について

属性checkin-intervalに指定された間隔で、サーバの稼働状況を監視します。
属性checkin-delay-limitに指定された時間を経過しても応答がない場合は、対象の実行エンジンで処理実行中状態のタスクをエラー終了状態に遷移します。
本機能を有効にすることで、ビジネスロジックの実行が予期せず中断された場合も、復旧後にタスクを再開(エラー終了状態のタスクを再登録)する等の措置が可能です。
本機能はintra-mart Accel Platform 2021 Summer(Cattleya)以降のバージョンで利用可能です。

実行エンジン(実装依存)

Resin

Resinでは非同期処理のタスク実行エンジンとしてJCA(Java EE Connector Architecture)を利用しています。

task-executor-jca-config.xml

  • task-executor-jca-config

    • work-manager-resource-info

      • jndi-name

        タスク実行エンジンで利用するリソースアダプタのJNDI参照名を指定します。

resin-web.xml

<web-app>/ <resource> に以下の内容を指定します。

<web-app xmlns="http://caucho.com/ns/resin">
   <resource jndi-name="jca/work"
             type="jp.co.intra_mart.system.asynchronous.impl.executor.work.
                     resin.ResinResourceAdapter" /> <!-- 実際には1行 -->
</web-app>
  • jndi-name

    task-executor-jca-config.xmlで指定したjndi-nameと同一にします。

  • type

    jp.co.intra_mart.system.asynchronous.impl.executor.work.resin. ResinResourceAdapter固定です。

Commonj (Weblogic)

Weblogicでは非同期処理のタスク実行エンジンとしてCommonjを利用しています。

非同期処理機能ではJNDIを通じてCommonjのWorkManagerを取得しています。

非同期処理機能ではタスクだけではなくタスク実行エンジンもWorkManager上で動作しますので、 WorkManagerで同時に実行可能な最大スレッド数は、最低でもtask-runner-config.xml<max-threads>で設定した値+ 1にしてください。

task-executor-commonj-config.xml

以下の値を設定してください。

  • task-executor-commonj-config

    • work-manager-info

      • jndi-name

        CommonjのWorkManagerを参照するJNDI名。web.xmlにもこれに準じたリソース参照名を設定する必要があります。

web.xmlの例

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
   version="3.0" metadata-complete="false">

   <resource-ref>
      <res-ref-name>wm/WorkManager</res-ref-name>
      <res-type>commonj.work.WorkManager</res-type>
      <res-auth>Container</res-auth>
      <res-sharing-scope>Shareable</res-sharing-scope>
   </resource-ref>

</web-app>

<web-app>/ <resource-ref>/ <res-ref-name> にはtask-executor-commonj-config.xml<jndi-name>で設定したものと同じ値を設定してください。

WorkManagerの設定

コラム

Weblogic上でWorkManagerを設定する場合の詳細については、Weblogicに関連するマニュアル等を御覧ください。

ここではweblogic.xmlWorkManagerを設定する例を説明します。

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app
      http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">

   <work-manager>
      <name>wm/WorkManager</name>
      <min-threads-constraint>
         <name>MinThreadsCountFour</name>
         <count>4</count>
      </min-threads-constraint>
      <ignore-stuck-threads>true</ignore-stuck-threads>
   </work-manager>
</weblogic-web-app>
  • <weblogic-web-app>/ <work-manager>/ <name>にはtask-executor-commonj-config.xml<jndi-name>で設定したものと同じ値を設定してください。
  • <weblogic-web-app>/ <work-manager>/ <min-threads-constraint>/ <count>には最低でも task-runner-config.xml<max-threads>で設定した値+ 1を設定ください。

Commonj (WebSphere)

WebSphereでは非同期処理のタスク実行エンジンとしてCommonjを利用しています。

非同期処理機能ではJNDIを通じてCommonjのWorkManagerを取得しています。

非同期処理機能ではタスクだけではなくタスク実行エンジンもWorkManager上で動作しますので、 WorkManagerで同時に実行可能な最大スレッド数は、最低でもtask-runner-config.xml<max-threads>で設定した値+ 1にしてください。

task-executor-commonj-config.xml

以下の値を設定してください。

  • task-executor-commonj-config

    • work-manager-info

      • jndi-name

        CommonjのWorkManagerを参照するJNDI名。web.xmlにもこれに準じたリソース参照名を設定する必要があります。

web.xmlの例

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
   version="3.0" metadata-complete="false">

   <resource-ref>
      <res-ref-name>wm/WorkManager</res-ref-name>
      <res-type>commonj.work.WorkManager</res-type>
      <res-auth>Container</res-auth>
      <res-sharing-scope>Shareable</res-sharing-scope>
   </resource-ref>

</web-app>

<web-app> <resource-ref> <res-ref-name>にはtask-executor-commonj-config.xml<jndi-name>で設定したものと同じ値を設定してください。

WorkManagerの設定

コラム

WebSphere上でWorkManagerを設定する場合の詳細については、WebSphereに関連するマニュアル等を御覧ください。

コンソール画面から[リソース]-[非同期 Bean]-[作業マネージャー]でWorkManagerを設定することが可能です。

デプロイ時には、ここで設定したWorkManagertask-executor-commonj-config.xmlで設定したJNDI参照名で参照できるようにしてください。

Concurrency Utilities(Payara)

Payaraでは非同期処理のタスク実行エンジンとしてConcurrency Utilities for Java EEを利用しています。

非同期処理機能ではJNDIを通じてConcurrency UtilitiesのExecutorServiceを取得しています。

task-executor-concurrency-config.xml

  • task-executor-concurrency-config

    • concurrency-utilities-resource-info

      • jndi-name

        タスク実行エンジンで利用するリソースアダプタのJNDI参照名を指定します。

Concurrency Utilitiesの設定

管理コンソールから[Resources]-[Concurrent Resources]-[Managed Executor Services]-[concurrent/__defaultManagedExecutorService]でConcurrency Utilitiesを設定することが可能です。

デプロイ時には、ここで設定したConcurrency Utilitiestask-executor-concurrency-config.xmlで設定したJNDI参照名で参照できるようにしてください。