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 実行スレッド数を指定します。 3queue-size キューのサイズを指定します。 2147483647 (Integer.MAX_VALUE)polling-timeout キューからの取得処理のタイムアウトまでの時間(ミリ秒)を指定します。 60000 [ms]queueing-retry-count キューへの登録処理の再試行回数を指定します。 100queueing-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つのタスクキューを設定し、スレッド数の設定を行うようにしてください。