(57)【要約】【課題】各キュー間で負荷の異なる状態となった場合でも複数の業務アプリケーションを効率的に利用することが可能な技術を提供する。【解決手段】第１のキューファイル中にメッセージが格納されている場合に、プール管理テーブルのレコード中の状態情報を使用中であることを示す内容に変更するステップと、前記レコード中のプログラムポインタで示されるプログラムに前記メッセージの処理を実行させるステップと、第２のキューファイル中にメッセージが格納されている場合に、前記プール管理テーブルのレコード中の状態情報を使用中であることを示す内容に変更するステップと、前記レコード中のプログラムポインタで示されるプログラムに前記メッセージの処理を実行させるステップと、前記第１または第２のキューファイルのメッセージ処理が終了した場合に当該メッセージ処理を実行したプログラムの前記プール管理テーブル中の状態情報を空きであることを示す内容に変更するステップとを有するものである。【選択図】        図１
2004302630.tif 000002
【特許請求の範囲】
【請求項１】
第１のキューファイル中にメッセージが格納されている場合に、プログラムの状態を示す状態情報と当該プログラムの記憶手段上での格納位置を示すプログラムポインタとを対応付け、その状態情報が空きであることを示している状態情報を使用中であることを示す内容に変更するステップと、当該状態情報に対応するプログラムポインタで示されるプログラムに前記第１のキューファイル中のメッセージを入力して当該メッセージの処理を実行させるステップと、
第２のキューファイル中にメッセージが格納されている場合に、その状態情報が空きであることを示している当該状態情報を使用中であることを示す内容に変更するステップと、当該状態情報に対応するプログラムポインタで示されるプログラムに前記第２のキューファイル中のメッセージを入力して当該メッセージの処理を実行させるステップと、
前記第１または第２のキューファイルのメッセージ処理が終了した場合に当該メッセージ処理を実行したプログラムの状態情報を空きであることを示す内容に変更するステップとを有することを特徴とするメッセージ処理方法。
【請求項２】
メッセージの種別を示す種別情報と、その種別のメッセージのキューファイル中での位置を示すキューポインタとを対応付け、そのキューポインタの位置に格納されているメッセージの種別が、対応する種別情報と一致するかどうかを判定するステップと、
メッセージの種別を示す種別情報と、その種別のメッセージを処理するプログラムのプログラムプール上での総数を示す多重度と、その種別のメッセージを処理中のプログラムの数を示す仕掛数と、その種別のメッセージを処理するプログラムのプール管理データの記憶手段上での格納位置を示すプールポインタとを対応付け、前記一致する種別の多重度が仕掛数よりも大きい場合にその仕掛数に１を加算するステップと、
特定の種別のメッセージを処理するプログラムの状態を示す状態情報と当該プログラムの記憶手段上での格納位置を示すプログラムポインタとを対応付けた複数のプール管理データの内、前記加算した仕掛数に対応するプールポインタで示されるプール管理データ中の空きであることを示している状態情報を使用中であることを示す内容に変更するステップと、
当該状態情報に対応するプログラムポインタで示されるプログラムに前記キューポインタで示される位置のメッセージを入力して当該メッセージの処理を実行させるステップと、
前記キューファイルのメッセージ処理が終了した場合に当該メッセージ処理を実行したプログラムの状態情報を空きであることを示す内容に変更し、対応する仕掛数から１を減算するステップとを有することを特徴とするメッセージ処理方法。
【請求項３】
前記多重度を１と指定することで、該当種別のメッセージ処理順序性を保証することを特徴とする請求項２に記載されたメッセージ処理方法。
【請求項４】
メッセージの種別を示す種別情報と、その種別のメッセージのキューファイル中での位置を示すキューポインタと、その種別のメッセージを処理するプログラムの状態を示す状態情報と、当該プログラムの記憶手段上での格納位置を示すプログラムポインタとを対応付け、キューポインタの位置に格納されているメッセージの種別が、対応する種別情報と一致すると共にその状態情報が空きである場合に当該状態情報を使用中であることを示す内容に変更するステップと、
そのプログラムポインタで示されるプログラムに前記キューポインタで示される位置のメッセージを入力して当該メッセージの処理を実行させるステップと、
前記キューファイルのメッセージ処理が終了した場合に当該メッセージ処理を実行したプログラムの状態情報を空きであることを示す内容に変更するステップとを有することを特徴とするメッセージ処理方法。
【請求項５】
第１のキューファイル中にメッセージが格納されている場合に、プログラムの状態を示す状態情報と当該プログラムの記憶手段上での格納位置を示すプログラムポインタとを対応付け、その状態情報が空きであることをことを示している状態情報を使用中であることを示す内容に変更し、当該状態情報に対応するプログラムポインタで示されるプログラムに前記第１のキューファイル中のメッセージを入力して当該メッセージの処理を実行させる第１のスケジュール管理部と、
第２のキューファイル中にメッセージが格納されている場合に、その状態情報が空きであることを示している状態情報を使用中であることを示す内容に変更し、当該状態情報に対応するプログラムポインタで示されるプログラムに前記第２のキューファイル中のメッセージを入力して当該メッセージの処理を実行させる第２のスケジュール管理部と、
前記第１または第２のキューファイルのメッセージ処理が終了した場合に当該メッセージ処理を実行したプログラムの状態情報を空きであることを示す内容に変更する空き状態設定処理部とを備えることを特徴とするメッセージ処理装置。
【請求項６】
メッセージの種別を示す種別情報と、その種別のメッセージのキューファイル中での位置を示すキューポインタとを対応付け、そのキューポインタの位置に格納されているメッセージの種別が、対応する種別情報と一致するかどうかを判定し、メッセージの種別を示す種別情報と、その種別のメッセージを処理するプログラムのプログラムプール上での総数を示す多重度と、その種別のメッセージを処理中のプログラムの数を示す仕掛数と、その種別のメッセージを処理するプログラムのプール管理データの記憶手段上での格納位置を示すプールポインタとを対応付け、前記一致する種別の多重度が仕掛数よりも大きい場合にその仕掛数に１を加算し、特定の種別のメッセージを処理するプログラムの状態を示す状態情報と当該プログラムの記憶手段上での格納位置を示すプログラムポインタとを対応付けた複数のプール管理データの内、前記加算した仕掛数に対応するプールポインタで示されるプール管理データ中の空きであることを示している状態情報を使用中であることを示す内容に変更し、当該状態情報に対応するプログラムポインタで示されるプログラムに前記キューポインタで示される位置のメッセージを入力して当該メッセージの処理を実行させるスケジュール管理部と、
前記キューファイルのメッセージ処理が終了した場合に当該メッセージ処理を実行したプログラムの状態情報を空きであることを示す内容に変更し、対応する仕掛数から１を減算する空き状態設定処理部とを備えることを特徴とするメッセージ処理装置。
【請求項７】
メッセージの種別を示す種別情報と、その種別のメッセージのキューファイル中での位置を示すキューポインタと、その種別のメッセージを処理するプログラムの状態を示す状態情報と、当該プログラムの記憶手段上での格納位置を示すプログラムポインタとを対応付け、キューポインタの位置に格納されているメッセージの種別が、対応する種別情報と一致すると共にその状態情報が空きである場合に当該状態情報を使用中であることを示す内容に変更し、そのプログラムポインタで示されるプログラムに前記キューポインタで示される位置のメッセージを入力して当該メッセージの処理を実行させるスケジュール管理部と、
前記キューファイルのメッセージ処理が終了した場合に当該メッセージ処理を実行したプログラムの状態情報を空きであることを示す内容に変更する空き状態設定処理部とを備えることを特徴とするメッセージ処理装置。
【請求項８】
第１のキューファイル中にメッセージが格納されている場合に、プログラムの状態を示す状態情報と当該プログラムの記憶手段上での格納位置を示すプログラムポインタとを対応付け、その状態情報が空きであることをことを示している状態情報を使用中であることを示す内容に変更し、当該状態情報に対応するプログラムポインタで示されるプログラムに前記第１のキューファイル中のメッセージを入力して当該メッセージの処理を実行させる第１のスケジュール管理部と、
第２のキューファイル中にメッセージが格納されている場合に、その状態情報が空きであることを示している状態情報を使用中であることを示す内容に変更し、当該状態情報に対応するプログラムポインタで示されるプログラムに前記第２のキューファイル中のメッセージを入力して当該メッセージの処理を実行させる第２のスケジュール管理部と、
前記第１または第２のキューファイルのメッセージ処理が終了した場合に当該メッセージ処理を実行したプログラムの状態情報を空きであることを示す内容に変更する空き状態設定処理部としてコンピュータを機能させることを特徴とするプログラム。
【請求項９】
メッセージの種別を示す種別情報と、その種別のメッセージのキューファイル中での位置を示すキューポインタとを対応付け、そのキューポインタの位置に格納されているメッセージの種別が、対応する種別情報と一致するかどうかを判定し、メッセージの種別を示す種別情報と、その種別のメッセージを処理するプログラムのプログラムプール上での総数を示す多重度と、その種別のメッセージを処理中のプログラムの数を示す仕掛数と、その種別のメッセージを処理するプログラムのプール管理データの記憶手段上での格納位置を示すプールポインタとを対応付け、前記一致する種別の多重度が仕掛数よりも大きい場合にその仕掛数に１を加算し、特定の種別のメッセージを処理するプログラムの状態を示す状態情報と当該プログラムの記憶手段上での格納位置を示すプログラムポインタとを対応付けた複数のプール管理データの内、前記加算した仕掛数に対応するプールポインタで示されるプール管理データ中の空きであることを示している状態情報を使用中であることを示す内容に変更し、当該状態情報に対応するプログラムポインタで示されるプログラムに前記キューポインタで示される位置のメッセージを入力して当該メッセージの処理を実行させるスケジュール管理部と、
前記キューファイルのメッセージ処理が終了した場合に当該メッセージ処理を実行したプログラムの状態情報を空きであることを示す内容に変更し、対応する仕掛数から１を減算する空き状態設定処理部としてコンピュータを機能させることを特徴とするプログラム。
【請求項１０】
メッセージの種別を示す種別情報と、その種別のメッセージのキューファイル中での位置を示すキューポインタと、その種別のメッセージを処理するプログラムの状態を示す状態情報と、当該プログラムの記憶手段上での格納位置を示すプログラムポインタとを対応付け、キューポインタの位置に格納されているメッセージの種別が、対応する種別情報と一致すると共にその状態情報が空きである場合に当該状態情報を使用中であることを示す内容に変更し、そのプログラムポインタで示されるプログラムに前記キューポインタで示される位置のメッセージを入力して当該メッセージの処理を実行させるスケジュール管理部と、
前記キューファイルのメッセージ処理が終了した場合に当該メッセージ処理を実行したプログラムの状態情報を空きであることを示す内容に変更する空き状態設定処理部としてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はメッセージキューイングを使用するメッセージ処理に適用して有効な技術に関するものである。
【０００２】
【従来の技術】
メッセージキューイングシステムは、キューを介してメッセージ転送を非同期に行うことで、送信側と受信側のアプリケーションプログラムが同時に動作している必要が無い通信方式を提供する技術である。アプリケーションプログラムは、メッセージキューイングシステムが提供するキューへのメッセージ登録、取出しを操作するアプリケーション・プログラム・インタフェース（ＡＰＩ）を使用してメッセージを送受信する。
【０００３】
キューとは、メッセージを保存できる論理的な待ち行列を構成する器であり、通常はディスク装置上のファイルで実現されている。メッセージ送信時には、宛先キューを指定してメッセージ登録ＡＰＩを発行することで、メッセージが宛先キューに格納される。
【０００４】
受信側アプリケーションは、メッセージ取出しＡＰＩを発行することで、宛先キューに格納されたメッセージを、キュー（待ち行列）に最も長く繋がれた順番に取り出す。なお、この取出しは、特定のメッセージを優先的に取り出すことも可能である。
【０００５】
メッセージキューイングシステムは、送信側と受信側の双方のアプリケーションが、キューを介し相手の応答を必要としないことにより相手側の状態に依存せず送信処理または受信処理が可能である為、柔軟性を具えた通信方式であるといえる。
【０００６】
また、アプリケーションは通信する際に意識するのは宛先であるキューのみである為、業務の変更追加、トラフィック増大した場合のキューにアクセスするアプリケーションを増やす等の対処が他アプリケーションに影響を与えずにでき、拡張性を具えた通信方式であるといえる。
【０００７】
さらに、通信障害やシステムダウンが発生しても、ディスク装置等の物理媒体に実体を有するキューに格納されたメッセージは消失することはなく、信頼性の高い通信方式を提供している。
【０００８】
近年、インターネット技術の発展、普及にともない、ＷＷＷサーバをベースとして業務を構築するシステムが増加している。業務を構築する基盤となる技術を利用したアプリケーションモデルの１つとしてＭｅｓｓａｇｅ  Ｄｒｉｖｅｎ  Ｂｅａｎ（メッセージ駆動型Ｂｅａｎ：略称ＭＤＢ）がある（例えば非特許文献１参照）。
【０００９】
通常のメッセージキューイングシステムにおいては、メッセージ受信アプリケーションはメッセージ受信ＡＰＩを発行することでメッセージを受信し、その後の業務処理を行う。
【００１０】
一方、ＭＤＢ型の業務は自動的に起動される為、メッセージ受信ＡＰＩを発行する必要が無い。トランザクション、認証や承認のセキュリティ等を業務が意識する必要が無く、アプリケーション開発者は業務処理のみに注力すれば良い構造となっている。
【００１１】
また、１つのキューに対して予め同一のＭＤＢ型業務を複数作成しておくことで、高トラフィックに対応することも可能である。これは、１つの受信メッセージに対して１つのＭＤＢ型業務が処理を行い、キューに蓄積されるメッセージ数が増加した場合、予め作成しておいたＭＤＢ型業務を複数並行に動作させることで対応できる。
【００１２】
【非特許文献１】
Ｒｉｃｈａｒｄ  Ｍｏｎｓｏｎ−Ｈａｅｆｅｌ，  Ｄａｖｉｄ  Ａ．Ｃｈａｐｐｅｌｌ著，  今野睦監訳、古澤秀明訳、「Ｊａｖｅメッセージサービス」  株式会社オライリー・ジャパン、ｐｐ．１５７−１６８、２００１年１０月１日初版第１刷発行
【００１３】
【発明が解決しようとする課題】
前記従来技術では、メッセージキューイングシステムのキューと業務の対応関係は１：Ｎであり、高トラフィック時には業務を複数並行に動作させることで対応する構造となっている。しかし、送信側クライアントが膨大な数であったり、複数の高トラフィックな送信ノードが存在する場合、１つの業務を１つのキューに対応させる構成では処理しきれないので、複数キューで同一の業務を対応させる構成をとることとなる。この場合、各キュー単位に業務アプリケーションが括り付けられることになり、キュー間で負荷が異なる場合、予め用意しておいた業務プログラムが効率的に利用されないという問題がある。
【００１４】
また、業務数が膨大な数である場合、業務毎にキューを作成することは現実的な構成ではなくなり、複数業務を同一キューに対応させ、メッセージ毎に付与された業務識別情報を業務アプリケーションが意識して業務を振り分ける構成となる。この場合、予め用意されるアプリケーションは複数業務を処理可能なものとする必要があり、アプリケーション中のある１つの業務処理部分の変更が他業務処理部分にも影響する為、業務の独立性、部品化が損なわれるという問題がある。
【００１５】
更に、複数業務を同一キューに対応付けた場合でメッセージ処理の順序性を保証しなければならない業務、または、同一業務であってメッセージの識別情報単位に処理の順序性を保証しなければならないケースにおいて、キューとアプリケーションの対応を１：１にする必要があり、アプリケーションを異なる業務毎、または、異なるメッセージ種別毎に並行して動作させることができず、高トラフィックに対応できないという問題がある。
【００１６】
本発明の目的は上記問題を解決し、メッセージキューイング処理において、多くのクライアントまたはメッセージ送信ノードが存在し、各キュー間で負荷の異なる状態となった場合でも、予め用意しておいた複数の業務アプリケーションを効率的に利用することが可能な技術を提供することにある。
【００１７】
本発明の他の目的はメッセージキューイング処理において、多種類の業務が存在する場合に、アプリケーションの独立性を損なわずに効率的に業務アプリケーションをスケジュールすることが可能な技術を提供することにある。
【００１８】
本発明の他の目的はメッセージキューイング処理において、メッセージの処理順序性を保証しなければならない業務が複数存在したり、メッセージの処理順序性を保証するメセージ識別グループが存在する場合に、効率的に業務アプリケーションをスケジュールすることが可能な技術を提供することにある。
【００１９】
【課題を解決するための手段】
本発明は、複数キュー中のメッセージの単一インスタンスプールへのスケジュール、単一キュー中のメッセージの複数インスタンスプールへのスケジュール、キュー中のメッセージ種別毎に順序性を保持したスケジュールを行うものである。ここで、インスタンスとは、プログラムやオブジェクト、スレッド、プロセス等を示すものとしている。またインスタンスプールは、前記インスタンスのグループのことを指すものとする。
【００２０】
本発明のメッセージ処理装置では、複数のキューファイルに登録される各メッセージを処理する複数のインスタンスを、単一のインスタンスプールにプールした後、それらのインスタンスの状態を示す状態情報と当該インスタンスの記憶装置上での格納位置を示すインスタンスポインタとを対応付けた単一のプール管理テーブルを生成しておく。
【００２１】
次に、第１のキューファイル中にメッセージが格納されているかどうかを調べ、第１のキューファイル中にメッセージが格納されている場合には、前記プール管理テーブルから、その状態情報が空きであることを示しているレコードを検索し、その検索されたレコードの状態情報を使用中であることを示す内容に変更する。
【００２２】
そして、前記検索されたレコード中のインスタンスポインタを読み出した後、そのインスタンスポインタで示されるインスタンスに前記第１のキューファイル中のメッセージを入力して当該メッセージの処理を実行させる。
【００２３】
次に、第２のキューファイル中にメッセージが格納されているかどうかを調べ、第２のキューファイル中にメッセージが格納されている場合には、前記プール管理テーブルから、その状態情報が空きであることを示しているレコードを検索し、その検索されたレコードの状態情報を使用中であることを示す内容に変更する。
【００２４】
そして、前記検索されたレコード中のインスタンスポインタを読み出した後、そのインスタンスポインタで示されるインスタンスに前記第２のキューファイル中のメッセージを入力して当該メッセージの処理を実行させる。
【００２５】
次に、前記実行されたインスタンスの処理を監視し、前記第１または第２のキューファイルのメッセージ処理が終了した場合には、当該メッセージ処理を実行したインスタンスのインスタンスポインタにより前記プール管理テーブルを検索し、その検索されたレコードの状態情報を空きであることを示す内容に変更する。
【００２６】
以上の様に本発明のメッセージ処理装置によれば、複数キューファイルに格納された各メッセージの単一インスタンスプールへのスケジュールを行うので、メッセージキューイング処理において、多くのクライアントまたはメッセージ送信ノードが存在し、各キュー間で負荷の異なる状態となった場合でも、予め用意しておいた複数の業務アプリケーションを効率的に利用することが可能である。
【００２７】
【発明の実施の形態】
（実施形態１）
以下に複数キュー中のメッセージの単一インスタンスプールへのスケジュール実施形態１のメッセージ処理装置について説明する。
【００２８】
図１は本実施形態のメッセージ処理装置９００の概要を示す図である。図１に示す様に本実施形態のメッセージ処理装置１００では、複数のキュー中のメッセージを単一のインスタンスプールに対応付ける為のプール管理テーブルを備えており、複数のキューに格納された各メッセージをプログラムである業務インスタンスへスケジュールする際、各キューに対応する複数のスケジュール管理部が、単一のプール管理テーブルを参照して空き状態の業務インスタンスへのポインタを取り出し、そのポインタで示される業務インスタンスへのスケジュールを行う。
【００２９】
この為、本実施形態のメッセージ処理装置１００では、多くのクライアントまたはメッセージ送信ノードが複数のキューにそれぞれメッセージを格納し、各キュー間で負荷の異なる状態となった場合でも、負荷の高いキューのメッセージが空き状態の業務インスタンスにスケジュールされるので、インスタンスプールに予め用意しておいた業務アプリケーションを効率的に利用することが可能である。
【００３０】
図２は本実施形態のメッセージ処理装置１００の概略構成を示す図である。図２に示す様に本実施形態のメッセージ処理装置１００は、ＣＰＵ２０１と、メモリ２０２と、磁気ディスク装置２０３と、入力装置２０４と、出力装置２０５と、ＣＤ−ＲＯＭ装置２０６と、通信装置２０７と、プール管理テーブル２０８とを有している。
【００３１】
ＣＰＵ２０１は、メッセージ処理装置１００全体の動作を制御する装置であり、計算機または情報処理装置で用いるものである。メモリ２０２は、メッセージ処理装置１００全体の動作を制御する際にその為の各種処理プログラムやデータをロードする記憶装置である。
【００３２】
磁気ディスク装置２０３は、前記各種処理プログラムやデータを格納しておく記憶装置である。入力装置２０４は、キュー中のメッセージを処理する為の各種入力を行う装置である。出力装置２０５は、キュー中のメッセージ処理に伴う各種出力を行う装置である。
【００３３】
ＣＤ−ＲＯＭ装置２０６は、前記各種処理プログラムを記録したＣＤ−ＲＯＭの内容を読み出す装置である。通信装置２０７は、インターネットやイントラネット等のネットワークを介して他の処理装置との通信を行う装置である。プール管理テーブル２０８は、インスタンスの状態を示す状態情報と当該インスタンスのメモリ２０２上での格納位置を示すインスタンスポインタとを対応付けたテーブルである。
またメッセージ処理装置１００は、スケジュール管理部２１１と、スケジュール管理部２１２と、空き状態設定処理部２１３とを有している。
【００３４】
スケジュール管理部２１１は、第１のキューファイル中にメッセージが格納されている場合に、プール管理テーブル２０８から状態情報が空きであることを示しているレコードを検索して当該状態情報を使用中であることを示す内容に変更し、前記検索されたレコード中のインスタンスポインタで示されるインスタンスに前記第１のキューファイル中のメッセージを入力して当該メッセージの処理を実行させる第１の処理部である。
【００３５】
スケジュール管理部２１２は、第２のキューファイル中にメッセージが格納されている場合に、プール管理テーブル２０８から状態情報が空きであることを示しているレコードを検索して当該状態情報を使用中であることを示す内容に変更し、前記検索されたレコード中のインスタンスポインタで示されるインスタンスに前記第２のキューファイル中のメッセージを入力して当該メッセージの処理を実行させる第２の処理部である。
【００３６】
空き状態設定処理部２１３は、前記第１または第２のキューファイルのメッセージ処理が終了した場合に当該メッセージ処理を実行したインスタンスのプール管理テーブル２０８中の状態情報を空きであることを示す内容に変更する処理部である。
【００３７】
メッセージ処理装置１００をスケジュール管理部２１１、スケジュール管理部２１２及び空き状態設定処理部２１３として機能させる為のプログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録され磁気ディスク等に格納された後、メモリにロードされて実行されるものとする。なお前記プログラムを記録する記録媒体はＣＤ−ＲＯＭ以外の他の記録媒体でも良い。また前記プログラムを当該記録媒体から情報処理装置にインストールして使用しても良いし、ネットワークを通じて当該記録媒体にアクセスして前記プログラムを使用するものとしても良い。
【００３８】
図３は本実施形態のスケジュール管理処理の処理手順を示すフローチャートである。本実施形態のメッセージ処理装置１００のスケジュール管理部２１１は、図３の処理手順に従って、第１のキューファイル中のメッセージをスケジュールする処理を行い、スケジュール管理部２１２は、第２のキューファイル中のメッセージをスケジュールする処理を行う。また３つ以上のキューが存在する場合も同様であるものとする。
【００３９】
図３に示す様にステップ３０１でメッセージ処理装置１００のスケジュール管理部２１１は、スケジュール管理部２１１が管理する第１のキューファイルを参照してそのキューファイル中にメッセージが格納されているかどうかを調べ、メッセージが格納されている場合にはステップ３０２へ進む。
【００４０】
ステップ３０２では、プール管理テーブル２０８を参照してその状態情報が空きであることを示しているレコードを検索する。
【００４１】
ステップ３０３では、前記検索の結果、状態情報が空きであるレコードが検索されたかどうかを調べ、検索された場合にはステップ３０４へ進み、検索されなかった場合には、所定時間の待ちを行った後、ステップ３０１の処理を再度行う。
【００４２】
ステップ３０４では、前記検索されたレコード中の状態情報を使用中であることを示す内容に変更する。そしてステップ３０５では、前記検索されたレコード中のインスタンスポインタを読み出した後、そのインスタンスポインタで示されるインスタンスに前記第１のキューファイル中のメッセージを入力して当該メッセージの処理を実行させ、ステップ３０１の処理へ戻る。ステップ３０１でそのキューファイル中にメッセージが格納されているかどうかを調べた結果、メッセージが格納されていない場合には、所定時間の待ちを行った後、ステップ３０１の処理を再度行う。
【００４３】
またメッセージ処理装置１００のスケジュール管理部２１２も、スケジュール管理部２１２の場合と同様にして第２のキューファイル中のメッセージのスケジュールを行うものとする。
【００４４】
図４は本実施形態の空き状態設定処理の処理手順を示すフローチャートである。図４に示す様にメッセージ処理装置１００の空き状態設定処理部２１３は、前記第１または第２のキューファイルのメッセージ処理が終了した場合に当該メッセージ処理を実行したインスタンスのプール管理テーブル２０８中の状態情報を空きであることを示す内容に戻す処理を行う。
【００４５】
ステップ４０１で空き状態設定処理部２１３は、実行中のメッセージ処理の実行状態を監視し、メッセージ処理の終了を検出した場合にはステップ４０１へ進み、そうでない場合には、所定時間の待ちを行った後、ステップ４０１の処理を再度行う。
【００４６】
ステップ４０２では、前記終了の検出されたメッセージ処理を実行したインスタンスのインスタンスポインタを受け取り、そのポインタと一致するインスタンスポインタが格納されているレコードをプール管理テーブル２０８から検索し、ステップ４０３では、前記検索されたレコードの状態情報を空きであることを示す内容に変更し、ステップ４０１の処理へ戻る。
【００４７】
以上説明した様に本実施形態のメッセージ処理装置によれば、複数キューファイルに格納された各メッセージの単一インスタンスプールへのスケジュールを行うので、メッセージキューイング処理において、多くのクライアントまたはメッセージ送信ノードが存在し、各キュー間で負荷の異なる状態となった場合でも、予め用意しておいた複数の業務アプリケーションを効率的に利用することが可能である。
【００４８】
（実施形態２）
以下に単一キューファイル中の異なる種別のメッセージをその種別に対応するインスタンスプールへスケジュールする実施形態２のメッセージ処理装置について説明する。
【００４９】
図５は本実施形態のメッセージ処理装置９００の概要を示す図である。図５に示す様に本実施形態のメッセージ処理装置５００では、キュー中の複数の種別のメッセージを、それぞれの種別のインスタンスプールに対応付ける為の各種テーブルを備えており、キューに格納された各種別のメッセージを対応する種別の業務インスタンスへスケジュールする際、仕掛数に余裕のある種別のプール管理テーブルを参照して空き状態の業務インスタンスへのポインタを取り出し、そのポインタで示される業務インスタンスへのスケジュールを行う。
【００５０】
つまり、本装置は、各業務種別毎に業務インスタンスを予め指定しておいた多重度の数だけプールした業務インスタンスプールと、プール内の各インスタンス状態及びインスタンスへのポインタを管理するプール管理テーブルの組を複数備えており、各プール管理テーブルに対応する業務種別、多重度、仕掛数、プール管理テーブルへのポインタを管理する処理管理テーブルを有する。
【００５１】
キュー管理テーブルの各業務種別毎のキューポインタは、キューの先頭から同一の業務を有するメッセージを検索し、処理管理テーブルの仕掛数が多重度に達するまで該当メッセージを業務種別に対応するプールの業務インスタンスをスケジュールする。
【００５２】
この為、本実施形態のメッセージ処理装置５００では、業務数が膨大な数となり、多種類の業務を同一キューに対応させた場合でも、各インスタンスプール中の業務インスタンスを業務毎に独立したものとすることが可能であり、アプリケーションの独立性を損なわずに効率的に業務アプリケーションをスケジュールすることが可能である。
【００５３】
図６は本実施形態のメッセージ処理装置５００の概略構成を示す図である。図６に示す様に本実施形態のメッセージ処理装置５００は、ＣＰＵ６０１と、メモリ６０２と、磁気ディスク装置６０３と、入力装置６０４と、出力装置６０５と、ＣＤ−ＲＯＭ装置６０６と、通信装置６０７と、キュー管理テーブル６０８と、処理管理テーブル６０９と、プール管理テーブル６１０とを有している。
【００５４】
ＣＰＵ６０１は、メッセージ処理装置５００全体の動作を制御する装置である。メモリ６０２は、メッセージ処理装置５００全体の動作を制御する際にその為の各種処理プログラムやデータをロードする記憶装置である。
【００５５】
磁気ディスク装置６０３は、前記各種処理プログラムやデータを格納しておく記憶装置である。入力装置６０４は、キュー中のメッセージを処理する為の各種入力を行う装置である。出力装置６０５は、キュー中のメッセージ処理に伴う各種出力を行う装置である。
【００５６】
ＣＤ−ＲＯＭ装置６０６は、前記各種処理プログラムを記録したＣＤ−ＲＯＭの内容を読み出す装置である。通信装置６０７は、インターネットやイントラネット等のネットワークを介して他の処理装置との通信を行う装置である。
【００５７】
キュー管理テーブル６０８は、メッセージの種別を示す種別情報と、その種別のメッセージのキューファイル中での位置を示すキューポインタとを対応付けたテーブルである。処理管理テーブル６０９は、メッセージの種別を示す種別情報と、その種別のメッセージを処理するインスタンスのインスタンスプール上での総数を示す多重度と、その種別のメッセージを処理中のインスタンスの数を示す仕掛数と、その種別のメッセージを処理するインスタンスのプール管理テーブル６１０の磁気ディスク装置６０３上での格納位置を示すプールポインタとを対応付けたテーブルである。
【００５８】
プール管理テーブル６１０は、特定の種別のメッセージを処理するインスタンスの状態を示す状態情報と当該インスタンスのメモリ６０２上での格納位置を示すインスタンスポインタとを対応付けたテーブルである。
【００５９】
またメッセージ処理装置５００は、スケジュール管理部６１１と、空き状態設定処理部６１２とを有している。
【００６０】
スケジュール管理部６１１は、キュー管理テーブル６０８中のキューポインタの位置に格納されているメッセージの種別が、対応する種別情報と一致し、処理管理テーブル６０９中の対応する種別の多重度が仕掛数よりも大きい場合にその仕掛数に「１」を加算し、そのプールポインタで示されるプール管理テーブル６１０から状態情報が空きであることを示しているレコードを検索して当該状態情報を使用中であることを示す内容に変更し、前記検索されたレコード中のインスタンスポインタで示されるインスタンスに前記キューポインタで示される位置のメッセージを入力して当該メッセージの処理を実行させる処理部である。
【００６１】
空き状態設定処理部６１２は、前記キューファイルのメッセージ処理が終了した場合に当該メッセージ処理を実行したインスタンスのプール管理テーブル６１０中の状態情報を空きであることを示す内容に変更し、処理管理テーブル６０９中の対応する仕掛数から「１」を減算する処理部である。
【００６２】
メッセージ処理装置５００をスケジュール管理部６１１及び空き状態設定処理部６１２として機能させる為のプログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録され磁気ディスク等に格納された後、メモリにロードされて実行されるものとする。なお前記プログラムを記録する記録媒体はＣＤ−ＲＯＭ以外の他の記録媒体でも良い。また前記プログラムを当該記録媒体から情報処理装置にインストールして使用しても良いし、ネットワークを通じて当該記録媒体にアクセスして前記プログラムを使用するものとしても良い。
【００６３】
また、処理管理テーブル６０９中の多重度を「１」と指定することで、その種別の業務のメッセージ処理順序性を保証するものとしても良い。すなわち、処理管理テーブル６０９中の多重度を「１」とすれば、その種別のメッセージは常に同じ業務インスタンスで処理されることになり、キューに格納された順序での処理が保証される様になる。
【００６４】
図７は本実施形態のスケジュール管理処理の処理手順を示すフローチャートである。図７に示す様にステップ７０１でメッセージ処理装置５００のスケジュール管理部６１１は、処理管理テーブル６０９の最初のレコードを読み出した後、そのレコード中の多重度と仕掛数とを比較し、前記多重度が仕掛数よりも大きい場合にはステップ７０２へ進み、そうでない場合にはステップ７０９へ進む。
【００６５】
ステップ７０２では、前記読み出したレコード中の種別のキューポインタをキュー管理テーブル６０８から読み出して、そのキューポインタの位置以降に格納されているメッセージを検索し、前記レコード中の種別と同一の種別識別情報を持つメッセージが格納されているかどうかを調べる。ここで、前記種別のキューポインタがキュー管理テーブル６０８に格納されていない場合にはキューの最初から検索を行うものとする。
【００６６】
ステップ７０３では、前記検索の結果、前記レコード中の種別と同一の種別識別情報を持つメッセージが検索されたかどうかを調べ、前記メッセージが検索された場合にはステップ７０４へ進み、そうでない場合にはステップ７０９へ進む。
【００６７】
ステップ７０４では、前記レコード中の仕掛数に「１」を加算する。
ステップ７０５では、前記レコード中のプールポインタで識別されるプール管理テーブル６１０を参照し、その状態情報が空きであることを示しているレコードを検索し、ステップ７０６では、前記検索されたプール管理テーブル６１０のレコード中の状態情報を使用中であることを示す内容に変更する。
【００６８】
ステップ７０７では、前記検索されたプール管理テーブル６１０のレコード中のインスタンスポインタを読み出した後、そのインスタンスポインタで示されるインスタンスに前記検索されたメッセージを入力して当該メッセージの処理を実行させ、ステップ７０８では、前記実行したメッセージへのキューポインタを、キュー管理テーブル６０８中に格納してステップ７０１の処理へ戻る。
【００６９】
またステップ７０９では、メッセージの検索されなかった種別のキューポインタをキュー管理テーブル６０８から削除した後、処理管理テーブル６０９の次のレコードを読み出してステップ７０１へ戻る。また処理管理テーブル６０９の最後まで達した場合には、所定時間の待ちを行った後、最初のレコードを読み出してステップ７０１へ戻る。
【００７０】
図８は本実施形態の空き状態設定処理の処理手順を示すフローチャートである。図８に示す様にメッセージ処理装置５００の空き状態設定処理部６１２は、前記キューファイルのメッセージ処理が終了した場合に当該メッセージ処理を実行したインスタンスのプール管理テーブル６１０中の状態情報を空きであることを示す内容に戻し、処理管理テーブル６０９中の対応する仕掛数から「１」を減算する処理を行う。
【００７１】
ステップ８０１で空き状態設定処理部６１２は、実行中のメッセージ処理の実行状態を監視し、メッセージ処理の終了を検出した場合にはステップ８０１へ進み、そうでない場合には、所定時間の待ちを行った後、ステップ８０１の処理を再度行う。
【００７２】
ステップ８０２では、前記終了の検出されたメッセージ処理を実行したインスタンスのインスタンスポインタを受け取り、そのポインタと一致するインスタンスポインタが格納されているレコードをプール管理テーブル６１０から検索し、ステップ８０３では、前記検索されたレコードの状態情報を空きであることを示す内容に変更する。
【００７３】
ステップ８０４では、前記状態情報を変更したプール管理テーブル６１０へのプールポインタを格納しているレコードを処理管理テーブル６０９から検索し、その検索されたレコード中の対応する仕掛数から「１」を減算して、ステップ８０１の処理へ戻る。
【００７４】
以上説明した様に本実施形態のメッセージ処理装置によれば、単一キューファイル中の異なる種別のメッセージをその種別に対応するインスタンスプールへスケジュールするので、メッセージキューイング処理において、多種類の業務が存在する場合に、アプリケーションの独立性を損なわずに効率的に業務アプリケーションをスケジュールすることが可能である。
【００７５】
（実施形態３）
以下にキューファイル中のメッセージ種別毎に順序性を保持したスケジュールを行う実施形態３のメッセージ処理装置について説明する。
【００７６】
図９は本実施形態のメッセージ処理装置９００の概要を示す図である。図９に示す様に本実施形態のメッセージ処理装置９００では、インスタンスプール中の各インスタンスに対応したキューポインタを格納するプール管理テーブルを備えており、同一キューに格納された各種別のメッセージをスケジュールする際、キューポインタ以降に存在する同一種別のメッセージを順番に取り出して対応する業務インスタンスへスケジュールする。
【００７７】
つまり、本装置は、各業務種別毎に単一の業務インスタンスを対応付けてプールした業務インスタンスプールと、プール内の各インスタンス状態、インスタンスの対応業務種別及びインスタンスへのポインタを管理するプール管理テーブルを有する。
【００７８】
プール管理テーブルの各業務種別毎のキューポインタはキューの先頭から同一の業務を有するメッセージを検索し、該当メッセージを業務種別に対応するプールの業務インスタンスをスケジュールする。
【００７９】
この為、本実施形態のメッセージ処理装置９００では、同一キューに対応付けられた複数業務のメッセージ処理の順序性を保証する場合に、効率的に業務アプリケーションをスケジュールすることが可能である。
【００８０】
図１０は本実施形態のメッセージ処理装置９００の概略構成を示す図である。図１０に示す様に本実施形態のメッセージ処理装置９００は、ＣＰＵ１００１と、メモリ１００２と、磁気ディスク装置１００３と、入力装置１００４と、出力装置１００５と、ＣＤ−ＲＯＭ装置１００６と、通信装置１００７と、プール管理テーブル１００８とを有している。
【００８１】
ＣＰＵ１００１は、メッセージ処理装置９００全体の動作を制御する装置である。メモリ１００２は、メッセージ処理装置９００全体の動作を制御する際にその為の各種処理プログラムやデータをロードする記憶装置である。
【００８２】
磁気ディスク装置１００３は、前記各種処理プログラムやデータを格納しておく記憶装置である。入力装置１００４は、キュー中のメッセージを処理する為の各種入力を行う装置である。出力装置１００５は、キュー中のメッセージ処理に伴う各種出力を行う装置である。
【００８３】
ＣＤ−ＲＯＭ装置１００６は、前記各種処理プログラムを記録したＣＤ−ＲＯＭの内容を読み出す装置である。通信装置１００７は、インターネットやイントラネット等のネットワークを介して他の処理装置との通信を行う装置である。
【００８４】
プール管理テーブル１００８は、メッセージの種別を示す種別情報と、その種別のメッセージのキューファイル中での位置を示すキューポインタと、その種別のメッセージを処理するインスタンスの状態を示す状態情報と、当該インスタンスのメモリ１００２上での格納位置を示すインスタンスポインタとを対応付けたテーブルである。
【００８５】
またメッセージ処理装置９００は、スケジュール管理部１０１１と、空き状態設定処理部１０１２とを有している。
【００８６】
スケジュール管理部１０１１は、プール管理テーブル１００８中のキューポインタの位置に格納されているメッセージの種別が、対応する種別情報と一致すると共にその状態情報が空きである場合に当該状態情報を使用中であることを示す内容に変更し、そのレコード中のインスタンスポインタで示されるインスタンスに前記キューポインタで示される位置のメッセージを入力して当該メッセージの処理を実行させる処理部である。
【００８７】
空き状態設定処理部１０１２は、前記キューファイルのメッセージ処理が終了した場合に当該メッセージ処理を実行したインスタンスのプール管理テーブル１００８中の状態情報を空きであることを示す内容に変更する処理部である。
【００８８】
メッセージ処理装置９００をスケジュール管理部１０１１及び空き状態設定処理部１０１２として機能させる為のプログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録され磁気ディスク等に格納された後、メモリにロードされて実行されるものとする。なお前記プログラムを記録する記録媒体はＣＤ−ＲＯＭ以外の他の記録媒体でも良い。また前記プログラムを当該記録媒体から情報処理装置にインストールして使用しても良いし、ネットワークを通じて当該記録媒体にアクセスして前記プログラムを使用するものとしても良い。
【００８９】
図１１は本実施形態のスケジュール管理処理の処理手順を示すフローチャートである。図１１に示す様にステップ１１０１でメッセージ処理装置９００のスケジュール管理部１０１１は、プール管理テーブル１００８の最初のレコードを読み出した後、そのレコード中の状態情報が空きであることを示しているかどうかを調べ、空きであることを示している場合にはステップ１１０２へ進み、そうでない場合にはステップ１１０７へ進む。
【００９０】
ステップ１１０２では、前記読み出したレコード中のキューポインタを読み出して、そのキューポインタの位置以降に格納されているメッセージを検索し、前記レコード中の種別と同一の種別識別情報を持つメッセージが格納されているかどうかを調べる。ここで、前記種別のキューポインタがプール管理テーブル１００８に格納されていない場合にはキューの最初から検索を行うものとする。
【００９１】
ステップ１１０３では、前記検索の結果、前記レコード中の種別と同一の種別識別情報を持つメッセージが検索されたかどうかを調べ、前記メッセージが検索された場合にはステップ１１０４へ進み、そうでない場合にはステップ１１０７へ進む。
【００９２】
ステップ１１０４では、前記レコード中の状態情報を使用中であることを示す内容に変更し、ステップ１１０５では、前記レコード中のインスタンスポインタで示されるインスタンスに前記検索されたメッセージを入力して当該メッセージの処理を実行させる。そしてステップ１１０６では、前記実行したメッセージへのキューポインタを、プール管理テーブル１００８中に格納する。
【００９３】
ステップ１１０７では、プール管理テーブル１００８の次のレコードを読み出してステップ１１０１へ戻る。またプール管理テーブル１００８の最後まで達した場合には、所定時間の待ちを行った後、最初のレコードを読み出してステップ１１０１へ戻る。
【００９４】
図１２は本実施形態の空き状態設定処理の処理手順を示すフローチャートである。図１２に示す様にメッセージ処理装置９００の空き状態設定処理部１０１２は、前記キューファイルのメッセージ処理が終了した場合に当該メッセージ処理を実行したインスタンスのプール管理テーブル１００８中の状態情報を空きであることを示す内容に変更する処理を行う。
【００９５】
ステップ１２０１で空き状態設定処理部１０１２は、実行中のメッセージ処理の実行状態を監視し、メッセージ処理の終了を検出した場合にはステップ１２０１へ進み、そうでない場合には、所定時間の待ちを行った後、ステップ１２０１の処理を再度行う。
【００９６】
ステップ１２０２では、前記終了の検出されたメッセージ処理を実行したインスタンスのインスタンスポインタを受け取り、そのポインタと一致するインスタンスポインタが格納されているレコードをプール管理テーブル１００８から検索し、ステップ１２０３では、前記検索されたレコードの状態情報を空きであることを示す内容に変更し、ステップ１２０１の処理へ戻る。
【００９７】
以上説明した様に本実施形態のメッセージ処理装置によれば、キューファイル中のメッセージ種別毎に順序性を保持したスケジュールを行うので、メッセージキューイング処理において、メッセージの処理順序性を保証しなければならない業務が複数存在したり、メッセージの処理順序性を保証するメセージ識別グループが存在する場合に、効率的に業務アプリケーションをスケジュールすることが可能である。
【００９８】
【発明の効果】
本発明によれば、メッセージキューイング処理におけるキュー間で負荷の異なる状態となった場合でも、複数の業務プログラムを効率的に利用することが可能である。
【図面の簡単な説明】
【図１】実施形態１のメッセージ処理装置の概要を示す図である。
【図２】実施形態１のメッセージ処理装置１００の概略構成を示す図である。
【図３】実施形態１のスケジュール管理処理の処理手順を示すフローチャートである。
【図４】実施形態１の空き状態設定処理の処理手順を示すフローチャートである。
【図５】実施形態２のメッセージ処理装置の概要を示す図である。
【図６】実施形態２のメッセージ処理装置５００の概略構成を示す図である。
【図７】実施形態２のスケジュール管理処理の処理手順を示すフローチャートである。
【図８】実施形態２の空き状態設定処理の処理手順を示すフローチャートである。
【図９】実施形態３のメッセージ処理装置の概要を示す図である。
【図１０】実施形態３のメッセージ処理装置９００の概略構成を示す図である。
【図１１】実施形態３のスケジュール管理処理の処理手順を示すフローチャートである。
【図１２】実施形態３の空き状態設定処理の処理手順を示すフローチャートである。
【符号の説明】
１００…メッセージ処理装置、２０１…ＣＰＵ、２０２…メモリ、２０３…磁気ディスク装置、２０４…入力装置、２０５…出力装置、２０６…ＣＤ−ＲＯＭ装置、２０７…通信装置、２０８…プール管理テーブル、２１１…スケジュール管理部、２１２…スケジュール管理部、２１３…空き状態設定処理部、５００…メッセージ処理装置、６０１…ＣＰＵ、６０２…メモリ、６０３…磁気ディスク装置、６０４…入力装置、６０５…出力装置、６０６…ＣＤ−ＲＯＭ装置、６０７…通信装置、６０８…キュー管理テーブル、６０９…処理管理テーブル、６１０…プール管理テーブル、６１１…スケジュール管理部、６１２…空き状態設定処理部、９００…メッセージ処理装置、１００１…ＣＰＵ、１００２…メモリ、１００３…磁気ディスク装置、１００４…入力装置、１００５…出力装置、１００６…ＣＤ−ＲＯＭ装置、１００７…通信装置、１００８…プール管理テーブル、１０１１…スケジュール管理部、１０１２…空き状態設定処理部。
【図１】
2004302630.tif 000003
【図２】
2004302630.tif 000004
【図３】
2004302630.tif 000005
【図４】
2004302630.tif 000006
【図５】
2004302630.tif 000007
【図６】
2004302630.tif 000008
【図７】
2004302630.tif 000009
【図８】
2004302630.tif 000010
【図９】
2004302630.tif 000011
【図１０】
2004302630.tif 000012
【図１１】
2004302630.tif 000013
【図１２】
2004302630.tif 000014