intra-mart Accel Platform IM-MessageHub プログラミングガイド 第3版 2021-04-01

6.7. IM-MessageHub の非同期処理機能

ここでは IM-MessageHub の非同期処理機能と設定方法について説明します。

6.7.1. IM-MessageHub の非同期処理機能とは

IM-MessageHub では、メッセージの配信処理などの非同期タスクの管理に、独自の非同期機構を利用しています。
この非同期機構では、非同期タスククラスごとにキューを保持し、IM-MessageHub の各非同期タスクを処理します。
IM-MessageHub が保持する非同期タスクキューは以下の通りです。
表:非同期タスククラスと詳細
タスククラス名 説明
jp.co.intra_mart.system.message_hub.task.MessageDispatchTask
メッセージを受け付けるためのキューです。
jp.co.intra_mart.system.message_hub.delivery.strategy.MessageDeliveryTask
MessageDeliverer に処理を依頼するためのキューです。

6.7.2. IM-MessageHub の非同期処理機能の設定

IM-MessageHub の持つ非同期機構では、設定ファイルによって、実行するタスククラス毎の実行スレッド数やキューの詳細を変更することが可能です。
標準では、IM-Juggling 上で設定ファイルは提供されません。
変更を行う場合には設定ファイルを新しく作成し、WARへ含めた上でアプリケーションサーバにデプロイする必要があります。
IM-Juggling のプロジェクト上に作成する設定ファイル名とパスは以下の通りです。
  • <conf/im-message-hub-worker-config.xml>
設定例は以下の通りです。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="UTF-8"?>
<im-message-hub-worker-config xmlns="http://www.intra-mart.jp/message-hub/im-message-hub-worker-config" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.intra-mart.jp/message-hub/im-message-hub-worker-config ../schema/im-message-hub-worker-config.xsd ">

  <task
    type                 ="jp.co.intra_mart.system.message_hub.task.MessageDispatchTask" 
    thread-count         ="1" 
    queue-size           ="1000" 
    polling-timeout      ="6000" 
    queueing-retry-count ="100" 
    queueing-timeout     ="300"/>

  <task
    type                 ="jp.co.intra_mart.system.message_hub.delivery.strategy.MessageDeliveryTask" 
    thread-count         ="3" 
    queue-size           ="1000" 
    polling-timeout      ="6000" 
    queueing-retry-count ="100" 
    queueing-timeout     ="300"/>

</im-message-hub-worker-config>
表:属性の詳細
設定項目 説明 デフォルト値
type 設定を行う非同期タスククラスの完全修飾クラス名(FQCN)を指定します。  
thread-count
実行スレッド数を指定します。
3
queue-size
キューのサイズを指定します。
2147483647 (Integer.MAX_VALUE)
polling-timeout
キューからの取得処理のタイムアウトまでの時間(ミリ秒)を指定します。
60000 [ms]
queueing-retry-count
キューへの登録処理の再試行回数を指定します。
100
queueing-timeout
キューへの登録処理のタイムアウトまでの時間(ミリ秒)を指定します。
300 [ms]

6.7.3. IM-MessageHub の非同期処理機能のデフォルト設定

標準では、IM-MessageHub では以下のデフォルト設定が行われています。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<?xml version="1.0" encoding="UTF-8"?>
<im-message-hub-worker-config xmlns="http://www.intra-mart.jp/message-hub/im-message-hub-worker-config"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.intra-mart.jp/message-hub/im-message-hub-worker-config ../schema/im-message-hub-worker-config.xsd ">

  <task
    type="jp.co.intra_mart.system.message_hub.task.MessageDispatchTask"
    max-thread-count="5"/>

  <task
    type="jp.co.intra_mart.system.message_hub.delivery.strategy.MessageDeliveryTask"
    max-thread-count="25"/>

</im-message-hub-worker-config>
この設定により、それぞれのタスクキューに対してデフォルトのスレッド数が設定されています。
表:非同期タスククラスとデフォルトスレッド数
タスククラス名 スレッド数
jp.co.intra_mart.system.message_hub.task.MessageDispatchTask 5
jp.co.intra_mart.system.message_hub.delivery.strategy.MessageDeliveryTask 25

注意

これらの設定は、設定ファイルを変更することによって上書きされます。
作成した設定ファイルには、必ず2つのタスクキューを設定し、スレッド数の設定を行うようにしてください。