(57)【要約】【課題】他の基盤との連携を取ることで柔軟にメッセージ処理性能を向上でき、メッセージのＦＩＦＯを保証して重複配信を防止する。【解決手段】メッセージキュー管理装置１０は、ユーザのメッセージを操作するためのポリシーデータを記憶するユーザ情報データベース２０の参照および更新を行い、契約者アカウントには全操作を許可し、一般アカウントにはポリシーデータに応じて操作の許可を行う権限制御部２０１と、送信者２によってメッセージが送信された順序を示す順序識別子をメッセージに付与する順序識別子制御部２０２と、受信者３に転送されたメッセージの取得カウンタを加算する取得カウンタ制御部２０３と、取得カウンタが０かつ順序が最も早い順序識別子を持つメッセージを検索するＤＢアダプタと、を有する。【選択図】図２
2016206788.tif 000002
【特許請求の範囲】
【請求項１】
送信者からメッセージを受け付け、メッセージ記憶装置に前記メッセージを記憶させ、受信者の要求に応じて前記メッセージを前記メッセージ記憶装置から検索し前記受信者に転送するメッセージキュー管理装置であって、
前記メッセージに対する操作の要求をユーザから受け付けた際に、該ユーザのアカウントが契約者アカウントである場合には、前記メッセージの全ての操作を許可し、該ユーザのアカウントが一般アカウントである場合には、前記メッセージを操作する権限を示すポリシーデータをユーザごとに記憶するユーザ情報記憶装置に記憶されている前記ポリシーデータを用いて、前記メッセージの操作の可否を判断する権限制御部と、
前記送信者から前記メッセージを受け付けた場合には、前記メッセージ記憶装置に前記メッセージを記憶させ、前記受信者の要求を受け付けた場合には、前記メッセージを前記メッセージ記憶装置から検索し取得するＤＢアダプタと、
を有することを特徴とするメッセージキュー管理装置。
【請求項２】
前記送信者によって前記メッセージが送信された場合に、前記メッセージが送信された順序を示す順序識別子を前記メッセージに付与する順序識別子制御部と、
前記メッセージを前記受信者に転送した場合には、前記メッセージ記憶装置に記憶されている前記メッセージが前記受信者によって受信されたか否かを示す取得情報を、受信されたことを示す情報に変更する取得カウンタ制御部と、
をさらに有し、
前記ＤＢアダプタは、
前記受信者の要求を受け付けた場合には、前記取得情報が受信されていないことを示す情報である前記メッセージのうち、前記順序識別子が示す順序が最も早い前記メッセージを前記メッセージ記憶装置から検索し取得することを有することを特徴とする請求項１に記載のメッセージキュー管理装置。
【請求項３】
前記メッセージ記憶装置に記憶されている前記メッセージの数が所定の閾値以上である場合は、前記順序識別子制御部および前記取得カウンタ制御部の処理を停止させる処理モード制御部をさらに有することを特徴とする請求項２に記載のメッセージキュー管理装置。
【請求項４】
送信者からメッセージを受け付け、メッセージ記憶装置に前記メッセージを記憶させ、受信者の要求に応じて前記メッセージを前記メッセージ記憶装置から検索し前記受信者に転送するメッセージキュー管理装置で実行されるメッセージキュー管理方法であって、
送信者からメッセージを受け付け、メッセージ記憶装置に前記メッセージを記憶させ、受信者の要求に応じて前記メッセージを前記メッセージ記憶装置から検索し前記受信者に転送するメッセージキュー管理装置であって、
前記メッセージに対する操作の要求をユーザから受け付けた際に、該ユーザのアカウントが契約者アカウントである場合には、前記メッセージの全ての操作を許可し、該ユーザのアカウントが一般アカウントである場合には、前記メッセージを操作する権限を示すポリシーデータをユーザごとに記憶するユーザ情報記憶装置に記憶されている前記ポリシーデータを用いて、前記メッセージの操作の可否を判断する権限制御工程と、
前記送信者から前記メッセージを受け付けた場合には、前記メッセージ記憶装置に前記メッセージを記憶させ、前記受信者の要求を受け付けた場合には、前記メッセージを前記メッセージ記憶装置から検索し取得するＤＢ連携工程と、
を含んだことを特徴とするメッセージキュー管理方法。
【請求項５】
コンピュータを請求項１から３のいずれか１項に記載のメッセージキュー管理装置として機能させるためのメッセージキュー管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラウド上で、メッセージの蓄積、配信を行うメッセージキュー管理装置、メッセージキュー管理方法およびメッセージキュー管理プログラムに関する。
【背景技術】
【０００２】
従来から、情報処理装置等に複数の処理を非同期で実行させる手段として、メッセージキューシステムが知られている。メッセージキューシステムにおいては、ユーザ端末等から処理の実行を命令するメッセージをキューに登録し、サーバ等にキューからメッセージを取得させる。
【０００３】
近年、クラウドサービスが進展し、ＰａａＳ（Platform  as  a  Service）が普及したことに伴い、クラウド上でメッセージキューシステムを提供するＰａａＳも知られるようになった（例えば、非特許文献１参照）。例えば、非特許文献１に記載されているAmazon（登録商標）  SQS（Simple  Queue  Service）は、ＰａａＳのＭＱ（Message  Queue）サービスとして著名である。
【０００４】
Amazon  SQSはＭＱサービスで、送信者がメッセージをキューに送信し、受信者はメッセージをキューから取得する。また、Amazon  SQSは１５個のＡＰＩを提供しており、ユーザは、ＡＰＩを用いて、キュー、メッセージ、ポリシーの管理が可能である。さらに、ＡＰＩと同じ処理をAmazon  Management  Consoleと呼ばれるＧＵＩからの操作によって実行することも可能である。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】James  Murty,  "Programming  amazon  web  services:  S3,  EC2,  SQS,  FPS,  and  SimpleDB",  O'Reilly  Media,  2009.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来のメッセージキューシステムであるAmazon  SQSには、他のクラウド基盤との柔軟な連携が取れないという問題がある。その理由は、Amazon  SQSにおいては、ポリシーによる権限管理を行うことで、アカウントごとに実行可能な操作を設定することができるが、ポリシーがＡＷＳ（Amazon  Web  Services（登録商標））独自のフレームワークであるＩＡＭ（Identity  and  Access  Management）により管理されており、汎用性が無いためである。
【０００７】
また、ポリシーが独自のフレームワークで管理されていることにより、多くのメッセージを高速に処理することが望まれた場合に、柔軟にメッセージ処理性能を向上できるようになっていないため、利用者が増加した場合に遅延が拡大する等の問題が発生する。さらに、Amazon  SQSではキューを複数のサーバで分散管理しており、メッセージのＦＩＦＯ（First  In  First  Out）は保証されず、また、メッセージが２回以上配信される重複受信が発生する場合があるという問題がある。
【０００８】
そこで、本発明は、他の基盤との連携を取ることで柔軟にメッセージ処理性能を向上でき、メッセージのＦＩＦＯを保証して重複配信を防止することを目的とする。
【課題を解決するための手段】
【０００９】
本発明のメッセージキュー管理装置は、送信者からメッセージを受け付け、メッセージ記憶装置に前記メッセージを記憶させ、受信者の要求に応じて前記メッセージを前記メッセージ記憶装置から検索し前記受信者に転送するメッセージキュー管理装置であって、
前記メッセージに対する操作の要求をユーザから受け付けた際に、該ユーザのアカウントが契約者アカウントである場合には、前記メッセージの全ての操作を許可し、該ユーザのアカウントが一般アカウントである場合には、前記メッセージを操作する権限を示すポリシーデータをユーザごとに記憶するユーザ情報記憶装置に記憶されている前記ポリシーデータを用いて、前記メッセージの操作の可否を判断する権限制御部と、前記送信者から前記メッセージを受け付けた場合には、前記メッセージ記憶装置に前記メッセージを記憶させ、前記受信者の要求を受け付けた場合には、前記メッセージを前記メッセージ記憶装置から検索し取得するＤＢアダプタと、を有することを特徴とする。
【００１０】
また、本発明のメッセージキュー管理方法は、送信者からメッセージを受け付け、メッセージ記憶装置に前記メッセージを記憶させ、受信者の要求に応じて前記メッセージを前記メッセージ記憶装置から検索し前記受信者に転送するメッセージキュー管理装置で実行されるメッセージキュー管理方法であって、送信者からメッセージを受け付け、メッセージ記憶装置に前記メッセージを記憶させ、受信者の要求に応じて前記メッセージを前記メッセージ記憶装置から検索し前記受信者に転送するメッセージキュー管理装置であって、前記メッセージに対する操作の要求をユーザから受け付けた際に、該ユーザのアカウントが契約者アカウントである場合には、前記メッセージの全ての操作を許可し、該ユーザのアカウントが一般アカウントである場合には、前記メッセージを操作する権限を示すポリシーデータをユーザごとに記憶するユーザ情報記憶装置に記憶されている前記ポリシーデータを用いて、前記メッセージの操作の可否を判断する権限制御工程と、前記送信者から前記メッセージを受け付けた場合には、前記メッセージ記憶装置に前記メッセージを記憶させ、前記受信者の要求を受け付けた場合には、前記メッセージを前記メッセージ記憶装置から検索し取得するＤＢ連携工程と、を含んだことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、他の基盤との連携を取ることで柔軟にメッセージ処理性能を向上でき、メッセージのＦＩＦＯを保証して重複配信を防止することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、第１の実施形態に係るメッセージキューシステムによるメッセージキューサービスの概要を示す図である。
【図２】図２は、第１の実施形態に係るメッセージキューシステムの構成の一例を示す図である。
【図３】図３は、第１の実施形態に係るユーザ情報データベースに登録されるデータの一例を示す図である。
【図４】図４は、第１の実施形態に係るメッセージキューデータベースに登録されるデータの一例を示す図である。
【図５】図５は、第１の実施形態に係るメッセージキュー管理装置においてメッセージが送信される際の処理の一例を示すフローチャートである。
【図６】図６は、第１の実施形態に係るメッセージキュー管理装置においてメッセージが受信される際の処理の一例を示すフローチャートである。
【図７】図７は、第１の実施形態に係るメッセージキュー管理装置においてメッセージが送信される際の処理の一例を示すシーケンス図である。
【図８】図８は、第１の実施形態に係るメッセージキュー管理装置においてメッセージが受信される際の処理の一例を示すシーケンス図である。
【図９−１】図９−１は、第１の実施形態に係るメッセージキューシステムから受信者がメッセージを受信する方法の一例を示す図である。
【図９−２】図９−２は、第１の実施形態に係るメッセージキューシステムから受信者がメッセージを受信する方法の一例を示す図である。
【図９−３】図９−３は、第１の実施形態に係るメッセージキューシステムから受信者がメッセージを受信する方法の一例を示す図である。
【図１０】図１０は、第２の実施形態に係るメッセージキューシステムの構成の一例を示す図である。
【図１１】図１１は、第２の実施形態に係るメッセージキュー管理装置の処理モードの一例を示す図である。
【図１２】図１２は、第２の実施形態に係るメッセージキュー管理装置の処理の一例を示すフローチャートである。
【図１３】図１３は、メッセージキュー管理プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１３】
以下に、本願に係るメッセージキュー管理装置、メッセージキュー管理方法およびメッセージキュー管理プログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態により本願に係るメッセージキュー管理装置、メッセージキュー管理方法およびメッセージキュー管理プログラムが限定されるものではない。
【００１４】
［用語の説明］
以降の説明において、ユーザ、送信者、受信者とは、実際に端末を操作している人間のみを示すものではなく、メッセージの送受信等の処理を実行するための端末、サーバ、仮想マシン等も含めた意味を持つものとする。例えば、メッセージを受信する権限を持つユーザのアカウントによって、メッセージを受信するプログラムが定期的に自動実行されるように設定された仮想マシンを受信者と呼ぶ。
【００１５】
［第１の実施形態に係るメッセージキューサービスの概要］
まず、図１を用いて、第１の実施形態に係るメッセージキューシステムによるメッセージキューサービスの概要について説明する。図１は、第１の実施形態に係るメッセージキューシステムによるメッセージキューサービスの概要を示す図である。
【００１６】
図１に示すように、ユーザは、インターネット等のネットワークを介してメッセージキューシステムと接続されている。ユーザは、ＧＵＩやＡＰＩ等のインタフェースを介してメッセージキューシステムに対してメッセージの送信を行う。そして、ユーザによって送信されたメッセージは、メッセージキューシステム内のデータベース等の記憶手段に記憶される。
【００１７】
メッセージキューシステムは、クラウド上の仮想マシンと接続されている。仮想マシンは、ＡＰＩ等のインタフェースを介してメッセージキューシステムに対してメッセージ転送要求を行う。そして、メッセージ転送要求を受けたメッセージキューシステムは、所定の手順に従って仮想マシンに対してメッセージを送信し、仮想マシンはメッセージを受信する。
【００１８】
メッセージキューシステムは、ある程度時間がかかる複数の処理を非同期で実行する場合に利用されることがある。この場合、ユーザは、仮想マシンが指定された処理を実行するために必要な情報をメッセージに含めることになる。なお、メッセージの送信をエンキュー、メッセージの受信をデキューと呼び、メッセージを受信する仮想マシン等の装置をワーカと呼ぶ場合もある。また、メッセージはメッセージキューシステムによってその形式やデータサイズ等が定められている。
【００１９】
［第１の実施形態に係るメッセージキューシステムの構成］
図２を用いて、第１の実施形態に係るメッセージキューシステム１の構成について説明する。図２は、第１の実施形態に係るメッセージキューシステムの構成の一例を示す図である。メッセージキューシステム１は、送信者２および受信者３とインターネット等のネットワークを介して接続されている。ここで、例えば、送信者２は図１のユーザと、受信者３は図１の仮想マシンと対応する。
【００２０】
図２に示すように、メッセージキューシステム１は、メッセージキュー管理装置１０、ユーザ情報データベース２０およびメッセージキューデータベース３０を有する。また、メッセージキュー管理装置１０は、入出力部１００および制御部２００を有する。メッセージキュー管理装置１０は、送信者２からメッセージを受け付け、メッセージ記憶装置であるメッセージキューデータベース３０にメッセージを記憶させ、受信者３の要求に応じてメッセージをメッセージキューデータベース３０から検索し受信者３に転送する。
【００２１】
入出力部１００は、メッセージキューＧＵＩ１０１およびメッセージキューＡＰＩ１０２を介して、送信者２および受信者３との間でメッセージの送受信を行う。例えば、入出力部１００のメッセージキューＧＵＩ１０１は、送信者２からのメッセージの送信を受け付ける。なお、送信者２は、端末等からメッセージキューＧＵＩ１０１を操作しメッセージの送信を行ってもよいし、プログラム等からメッセージキューＡＰＩ１０２によってメッセージの送信を行ってもよい。
【００２２】
そして、入出力部１００のメッセージキューＡＰＩ１０２は、受信者３からのメッセージ転送要求を受け付け、さらに受信者３に対してメッセージを転送する。なお、受信者３はメッセージキューＧＵＩ１０１からメッセージの転送要求およびメッセージの受信を行うようにしてもよい。
【００２３】
制御部２００は、入出力部１００で受け付けたメッセージおよびメッセージ転送要求の処理、また、入出力部１００から転送されるメッセージの選択等を行う。図２に示すように、制御部２００は、権限制御部２０１、順序識別子制御部２０２、取得カウンタ制御部２０３およびＤＢアダプタ２０４を有する。
【００２４】
権限制御部２０１は、メッセージに対する操作の要求をユーザから受け付けた際に、該ユーザのアカウントが契約者アカウントである場合には、メッセージの全ての操作を許可し、該ユーザのアカウントが一般アカウントである場合には、メッセージを操作する権限を示すポリシーデータをユーザごとに記憶するユーザ情報データベース２０に記憶されているポリシーデータを用いて、メッセージの操作の可否を判断する。具体的には、権限制御部２０１は、一般アカウントのユーザの各処理に対する権限の有無を確認し、入出力部１００を介してユーザにメッセージの操作の可否を通知する。ここで、権限制御部２０１は、ユーザの各処理に対する権限の有無を確認するために、ユーザのＩＤ等を用いてユーザの権限をユーザ情報データベース２０に対して照会する。そして、ユーザ情報データベース２０から取得したユーザの権限を基に、ユーザの操作可否を判定し、判定結果を入出力部１００を介してユーザに通知する。また、権限制御部２０１は、ユーザ情報データベース２０に対して、データの登録や更新を行うことができる。なお、ユーザが契約者アカウントを持っている場合は、ユーザ情報データベース２０に照会を行うことなく操作を許可するようにしてもよい。
【００２５】
順序識別子制御部２０２は、送信者２によってメッセージが送信された場合に、メッセージが送信された順序を示す順序識別子をメッセージに付与する。具体的には、順序識別子制御部２０２は、入出力部１００で受け付けたメッセージに、受け付けられた時間的な順序を示す順序識別子を付与する。ここで、順序識別子制御部２０２は、メッセージキューデータベース３０から登録済みのメッセージのうち、順序が最も遅い順序識別子を取得し、取得した順序識別子の順序より１つだけ遅い順序となるように、メッセージに順序識別子を付与する。さらに、順序識別子制御部２０２は、入出力部１００でメッセージ転送要求が受け付けられた場合に、転送するメッセージをメッセージキューデータベース３０から検索するための条件に、順序が最も早い順序識別子を持つメッセージを検索するための条件を追加する。
【００２６】
取得カウンタ制御部２０３は、メッセージを受信者３に転送した場合には、メッセージキューデータベース３０に記憶されているメッセージが受信者３によって受信されたか否かを示す取得情報である取得カウンタを、受信されたことを示す情報に変更する。具体的には、取得カウンタ制御部２０３は、入出力部１００でメッセージ転送要求が受け付けられた場合に、転送するメッセージをメッセージキューデータベース３０から検索するための条件に、取得カウンタが０であるメッセージを検索するための条件を追加する。また、取得カウンタ制御部２０３は、入出力部１００にメッセージが転送された際に、転送されたメッセージの取得カウンタに例えば１を加算する。
【００２７】
ＤＢアダプタ２０４は、送信者２からメッセージを受け付けた場合は、メッセージキューデータベース３０にメッセージを記憶させ、受信者３の要求を受け付けた場合には、取得カウンタの値が受信されていないことを示す値であるメッセージのうち、順序識別子が示す順序が最も早いメッセージを検索し取得する。具体的には、ＤＢアダプタ２０４は、メッセージキュー管理装置１０とメッセージキューデータベース３０との間でデータの送受信が行われる際に、送受信されるデータがそれぞれの装置で利用可能となるようにデータ形式の変換等を行う。例えば、メッセージキューデータベース３０においてMySQLのDBMSによりメッセージが管理されている場合と、MongoDBのDBMSによりメッセージが管理されている場合とでは、扱えるデータの形式が異なるため、それぞれのDBMSに対応したＤＢアダプタ２０４を用意することによってデータの送受信が可能となる。また、順序識別子制御部２０２および取得カウンタ制御部２０３によって設定された検索条件を用いて、ＤＢアダプタ２０４がメッセージキューデータベース３０の検索を行う。
【００２８】
図３を用いて、ユーザ情報データベース２０に記憶されるデータについて説明する。図３は、第１の実施形態に係るユーザ情報データベースに登録されるデータの一例を示す図である。図３に示すように、ユーザ情報データベース２０には、ユーザごとのユーザ権限およびメッセージに対する操作等の権限の有無を示すポリシーデータが記憶されている。例えば、ユーザ１は全ての権限を持つ契約者アカウントのユーザである。また、ユーザ２〜４は、一般アカウントのユーザであるため、権限のある操作のみ行うことができる。例えば、ユーザ２は、メッセージ送信、メッセージ受信およびメッセージ削除を行うことができる。
【００２９】
図４を用いて、メッセージキューデータベース３０に登録されるメッセージについて説明する。図４は、第１の実施形態に係るメッセージキューデータベースに登録されるデータの一例を示す図である。図４に示すように、メッセージキューデータベース３０には、例えば、順序識別子、メッセージ、取得カウンタおよび送信日時等が登録される。そして、メッセージが登録される場合は、順序識別子は制御部２００の順序識別子制御部２０２によって算出され、取得カウンタの初期値は０となる。この時、図４に示すように、順序識別子が示す順序は、メッセージの送信が行われた送信日時の順序と対応する。なお、図４は登録されるデータの一例を示すものであり、実際に登録される項目は図４に示すものに限られない。
【００３０】
［第１の実施形態に係るメッセージキューシステムの処理］
次に、図５等を用いて、第１の実施形態に係るメッセージキューシステム１の処理について説明する。
【００３１】
まず、図５を用いて、送信者２からメッセージキュー管理装置１０にメッセージが送信された際の処理について説明する。図５は、第１の実施形態に係るメッセージキュー管理装置においてメッセージが送信される際の処理の一例を示すフローチャートである。
【００３２】
図５に示すように、まず、入出力部１００は、ユーザからのメッセージの送信を受け付ける（ステップＳ１０１）。なお、この場合のユーザは、例えば、図２の送信者２と対応する。そして、制御部２００の権限制御部２０１はユーザ情報データベース２０からユーザの権限情報を取得し、ユーザのメッセージ送信権限の有無を確認する（ステップＳ１０２）。
【００３３】
ここで、ユーザにメッセージ送信権限がある場合（ステップＳ１０３、Ｙｅｓ）は、制御部２００の順序識別子制御部２０２は、メッセージキューデータベース３０に登録済みのメッセージから順序が最も遅い順序識別子を取得する（ステップＳ１０４）。そして、順序識別子制御部２０２は、通知された順序識別子より順序が１つだけ遅い順序識別子をメッセージに付与する（ステップＳ１０５）。その後、メッセージはメッセージキューデータベース３０に登録される（ステップＳ１０６）。
【００３４】
また、ユーザにメッセージ送信権限がない場合（ステップＳ１０３、Ｎｏ）は、入出力部１００によって、ユーザにメッセージ送信権限がない旨が通知される（ステップＳ１０７）。
【００３５】
次に、図６を用いて、受信者３からメッセージキュー管理装置１０にメッセージの転送要求が行われた際の処理について説明する。図６は、第１の実施形態に係るメッセージキュー管理装置においてメッセージが受信される際の処理の一例を示すフローチャートである。
【００３６】
図６に示すように、まず、入出力部１００は、ユーザからのメッセージの転送要求を受け付ける（ステップＳ２０１）。なお、この場合のユーザは、例えば、図２の受信者３と対応する。そして、制御部２００の権限制御部２０１はユーザ情報データベース２０からユーザの権限情報を取得し、ユーザのメッセージ受信権限の有無を確認する（ステップＳ２０２）。
【００３７】
ここで、ユーザにメッセージ受信権限がある場合（ステップＳ２０３、Ｙｅｓ）は、制御部２００の順序識別子制御部２０２は、メッセージキューデータベース３０を検索するメッセージ検索条件に「順序が最も早い順序識別子を持つこと」という条件を追加する（ステップＳ２０４）。さらに、制御部２００の取得カウンタ制御部２０３は、メッセージ検索条件に「取得カウンタが０であること」という条件を追加する（ステップＳ２０５）。
【００３８】
そして、メッセージ検索条件に従ってメッセージキューでメッセージキューデータベース３０からメッセージが取得される（ステップＳ２０６）。その後、制御部２００の取得カウンタ制御部２０３は、取得したメッセージの取得カウンタに１を加算する（ステップＳ２０７）。最後に、入出力部１００は、メッセージキューデータベース３０から取得したメッセージをユーザに転送する（ステップＳ２０８）。
【００３９】
また、ユーザにメッセージ受信権限がない場合（ステップＳ２０３、Ｎｏ）は、入出力部１００によって、ユーザにメッセージ受信権限がない旨が通知される（ステップＳ２０９）。
【００４０】
ここで、図７を用いて、メッセージキューシステム１のメッセージの送信時の処理について、さらに詳しく説明する。図７は、第１の実施形態に係るメッセージキュー管理装置においてメッセージが送信される際の処理の一例を示すシーケンス図である。
【００４１】
図７に示すように、まず、送信者２はメッセージキュー管理装置１０の入出力部１００に対してメッセージの送信を行う（ステップＳ１５１）。そして、入出力部１００は、権限制御部２０１に対して、送信者２のメッセージ送信という操作の操作可否を問い合わせる（ステップＳ１５２）。
【００４２】
権限制御部２０１は、送信者２のユーザ権限をユーザ情報データベース２０に照会する（ステップＳ１５３）。そして、ユーザ情報データベース２０は、送信者２の権限情報を検索し（ステップＳ１５４）、取得した送信者２の権限を権限制御部２０１に通知する（ステップＳ１５５）。さらに、権限制御部２０１は、通知された権限を基に送信者２の操作可否を判定し（ステップＳ１５６）、判定結果を入出力部１００に通知する（ステップＳ１５７）。以降、送信者２にメッセージ送信の権限があるものとして説明を行う。
【００４３】
次に、入出力部１００は、順序識別子制御部２０２にメッセージを転送する（ステップＳ１５８）。そして、順序識別子制御部２０２は、メッセージキューデータベース３０に登録済みのメッセージのうち、順序が最も遅い順序識別子を、ＤＢアダプタ２０４を介して照会する（ステップＳ１５９、Ｓ１６０）。
【００４４】
そして、メッセージキューデータベース３０は順序が最も遅い順序識別子を検索し（ステップＳ１６１）、検索結果の順序識別子を、ＤＢアダプタ２０４を介して順序識別子制御部２０２に通知する（ステップＳ１６２、Ｓ１６３）。その後、順序識別子制御部２０２は、通知された順序識別子より順序が１つだけ遅い順序識別子をメッセージに付与し（ステップＳ１６４）、ＤＢアダプタ２０４を介してメッセージキューデータベース３０にメッセージを転送する（ステップＳ１６５、Ｓ１６６）。
【００４５】
続いて、図８を用いて、メッセージキューシステム１のメッセージの受信時の処理について、さらに詳しく説明する。図８は、第１の実施形態に係るメッセージキュー管理装置においてメッセージが受信される際の処理の一例を示すシーケンス図である。
【００４６】
図８に示すように、まず、受信者３はメッセージキュー管理装置１０の入出力部１００に対してメッセージの転送要求を行う（ステップＳ２５１）。そして、入出力部１００は、権限制御部２０１に対して、受信者３のメッセージ受信という操作の操作可否を問い合わせる（ステップＳ２５２）。
【００４７】
権限制御部２０１は、受信者３のユーザ権限をユーザ情報データベース２０に照会する（ステップＳ２５３）。そして、ユーザ情報データベース２０は、受信者３の権限情報を検索し（ステップＳ２５４）、取得した受信者３の権限を権限制御部２０１に通知する（ステップＳ２５５）。さらに、権限制御部２０１は、通知された権限を基に受信者３の操作可否を判定し（ステップＳ２５６）、判定結果を入出力部１００に通知する（ステップＳ２５７）。以降、受信者３にメッセージ受信の権限があるものとして説明を行う。
【００４８】
次に、入出力部１００は、順序識別子制御部２０２にメッセージの転送要求を行う（ステップＳ２５８）。ここで、メッセージの転送要求には、メッセージ検索のための任意の条件を設定することができるものとする。なお、メッセージ検索のための条件は、受信者３により設定されていてもよい。
【００４９】
そして、メッセージ転送要求は、順序識別子制御部２０２および取得カウンタ制御部２０３を経由してＤＢアダプタ２０４に転送される（ステップＳ２６０、Ｓ２６２）。この時、順序識別子制御部２０２は、メッセージ検索条件に、「順序が最も早い順序識別子を持つこと」という条件を設定する（ステップＳ２５９）。また、取得カウンタ制御部２０３は、メッセージ検索条件に「取得カウンタが０であること」という条件を設定する（ステップＳ２６１）。
【００５０】
その後、メッセージ転送要求は、メッセージ検索条件を設定されたうえで、ＤＢアダプタ２０４を介して、メッセージキューデータベース３０に転送される（ステップＳ２６３）。そして、メッセージキューデータベース３０は、メッセージ検索条件に従ってメッセージの検索を行い（ステップＳ２６４）、検索したメッセージを、ＤＢアダプタ２０４を介して、取得カウンタ制御部２０３を経由させ、入出力部１００へ転送し、最終的に受信者３に転送する（ステップＳ２６５〜Ｓ２６８）。この時、取得カウンタ制御部２０３は、転送されるメッセージの取得カウンタに１を加算するように、ＤＢアダプタ２０４を介してメッセージキューデータベース３０に要求する（ステップＳ２６９、Ｓ２７０）。
【００５１】
ここで、図９−１、図９−２および図９−３を用いて、順序識別子および取得カウンタを利用した整合性が担保されたメッセージの受信方法について説明する。図９−１、図９−２および図９−３は、第１の実施形態に係るメッセージキューシステムから受信者がメッセージを受信する方法の一例を示す図である。
【００５２】
図９−１に示すように、メッセージキューデータベース３０には、メッセージ３０１ａ、メッセージ３０１ｂおよびメッセージ３０１ｃが登録されているものとする。そして、メッセージを受信するユーザとして、受信者２ａ、受信者２ｂおよび受信者２ｃが存在しており、受信者２ａ、受信者２ｂ、受信者２ｃの順番でメッセージ転送要求を行うものとする。
【００５３】
まず、図９−１に示すように、受信者２ａがメッセージ転送要求を行う。この時、メッセージ検索条件として、順序識別子制御部２０２および取得カウンタ制御部２０３によって、それぞれ「順序が最も早い順序識別子を持つこと」および「取得カウンタが０であること」という条件が設定されている。そのため、最も早い１という順序識別子を持ち、かつ取得カウンタが０であるメッセージ３０１ａが検索され、受信者２ａによって受信される。
【００５４】
なお、図９−１におけるメッセージ３０２ａは、メッセージ３０１ａから受信者２ａに必要な項目を抜き出したデータである。例えば、メッセージ３０１ａには図４に示すような順序識別子、メッセージ、取得カウンタ、送信日時といった項目が含まれているが、メッセージ３０２ａには順序識別子および取得カウンタが含まれないようにしてもよい。当然、メッセージ３０２ａに、メッセージ３０１ａが有している全ての項目を含めるようにしてもよい。また、ここで説明したメッセージ３０１ａとメッセージ３０２ａとの関係は、図９−２におけるメッセージ３０１ｂとメッセージ３０２ｂとの関係および図９−３におけるメッセージ３０１ｃとメッセージ３０２ｃとの関係においても同様である。
【００５５】
次に、図９−２に示すように、受信者２ｂがメッセージ転送要求を行う。この時、図９−１の場合と同様に、メッセージ検索条件として、「順序が最も早い順序識別子を持つこと」および「取得カウンタが０であること」という条件を満たすメッセージを検索すると、メッセージ３０１ｂが検索され、受信者２ｂによって受信される。なお、メッセージ３０１ａは、受信者２ａが受信した後に、取得カウンタに１が加算されているため、「取得カウンタが０であること」という条件を満たさなくなっている。
【００５６】
そして、図９−３に示すように、受信者２ｃがメッセージ転送要求を行うと、図９−１および図９−２の場合と同様の処理によって、メッセージ３０１ｃが受信される。
【００５７】
なお、図９−１、図９−２および図９−３からも分かる通り、メッセージの受信が行われた場合であっても、メッセージキューデータベース３０に登録されているメッセージが自動的に削除されるとは限らない。このため、メッセージ削除権限を持つユーザによって明示的にメッセージ削除要求を行うことや、所定の時間経過後に自動的にメッセージを削除するようにメッセージキューシステム１を設定することによってメッセージを削除するようにしてもよい。
【００５８】
［第１の実施形態の効果］
メッセージキューシステム１のメッセージキュー管理装置１０は、ユーザ情報データベース２０の参照および更新を行い、メッセージに対する操作を要求するユーザのアカウントが契約者アカウントである場合には、メッセージの全ての操作を許可し、メッセージに対する操作を要求するユーザのアカウントが一般アカウントである場合には、ユーザ情報データベース２０に記憶されているポリシーデータを参照しメッセージの操作の可否を判断する。これにより、ユーザの権限を、メッセージキュー管理装置１０からアクセスできない独自のフレームワークによって管理されることがなく、権限を有するメッセージキュー管理装置１０のユーザによって権限の管理が可能となり、汎用性を向上させ、OpenStackやCloudStack等の他の基盤との柔軟な連携が可能となる。
【００５９】
また、メッセージキュー管理装置１０の順序識別子制御部２０２は、送信者２によってメッセージが送信された場合に、メッセージが送信された順序を示す順序識別子をメッセージに付与する。これによって、受信者が特別な処理を実装することなくメッセージのＦＩＦＯが保証される。
【００６０】
さらに、メッセージキュー管理装置１０の取得カウンタ制御部２０３は、受信者３に転送されたメッセージの取得カウンタを加算する。これによって、受信者が特別な処理を実装することなくメッセージの重複受信が防止される。
【００６１】
また、メッセージキュー管理装置１０のＤＢアダプタ２０４は、送信者２からメッセージを受け付けた場合は、メッセージキューデータベース３０にメッセージを記憶させ、受信者３の要求を受け付けた場合には、取得カウンタの値が受信されていないことを示す値であるメッセージのうち、順序識別子が示す順序が最も早いメッセージを検索し取得する。これによって、例えば、ユーザ数の増加に応じて、メッセージキューデータベース３０として使用するバックエンドデータベースの変更等が行われた場合であっても、ＤＢアダプタ２０４によって変更後のデータベースのデータ形式等に対応することが可能であるため、他の基盤との連携を取ることで柔軟にメッセージ処理性能を向上することができる。
【００６２】
［第２の実施形態に係るメッセージキューシステムの構成］
第１の実施形態においては、順序識別子制御部２０２および取得カウンタ制御部２０３の処理によって、メッセージの整合性が保たれているが、整合性よりも処理速度を優先したい場合には、処理モードを切り替えるようにしてもよい。第２の実施形態では、処理モードの切り替え機能を持つメッセージキューシステムについて説明する。図１０を用いて、第２の実施形態に係るメッセージキューシステム１の構成について説明する。図１０は、第２の実施形態に係るメッセージキューシステムの構成の一例を示す図である。図１０に示すように、第２の実施形態に係るメッセージキューシステム１には、第１の実施形態の構成に加えて、制御部２００に、処理モード制御部２０５が追加されている。処理モード制御部２０５は、メッセージキューデータベース３０に記憶されているメッセージの数が所定の閾値以上である場合は、順序識別子制御部２０２および取得カウンタ制御部２０３の処理を停止させる。
【００６３】
処理モード制御部２０５は、所定の条件に従って、メッセージキュー管理装置１０の処理モードを切り替える。図１１を用いて、処理モード制御部２０５における処理モードの切り替え処理について説明する。図１１は、第２の実施形態に係るメッセージキュー管理装置１０の処理モードの一例を示す図である。
【００６４】
図１１に示すように、処理モード制御部２０５は、速度優先モードと整合性優先モードとの切り替えを行う。また、処理モード制御部２０５は、処理モードを切り替えるか否かを、メッセージキューデータベース３０に登録されているメッセージの数によって決定する。例えば、メッセージキューデータベース３０に登録されているメッセージの数が閾値以上である場合は、処理モード制御部２０５は、メッセージキュー管理装置１０の処理モードを速度優先モードに切り替える。また、登録されているメッセージの数が閾値未満である場合は、処理モード制御部２０５は、メッセージキュー管理装置１０の処理モードを整合性優先モードに切り替える。
【００６５】
また、速度優先モードにおいては、メッセージ送信の際に、順序識別子制御部２０２による順序識別子の付与が行われない。さらに、メッセージ受信の際のメッセージ検索条件に、「順序が最も早い順序識別子を持つこと」および「取得カウンタが０であること」という条件が設定されない。そして、メッセージを受信した際に、メッセージの取得カウンタに１を加算する処理が行われない。なお、整合性優先モードにおける処理は、第１の実施形態で説明した処理と同様である。
【００６６】
なお、処理モードは、図１１で説明したものに限られず、例えば、メッセージの重複受信を許可する場合には、順序識別子を有効にして、取得カウンタを無効にするような処理モードを設定してもよい。
【００６７】
［第２の実施形態に係るメッセージキューシステムの処理］
次に、図１２を用いて、第２の実施形態に係るメッセージキューシステム１の処理モード制御部２０５の処理について説明する。図１２は、第２の実施形態に係るメッセージキュー管理装置の処理の一例を示すフローチャートである。
【００６８】
図１２に示すように、処理モード制御部２０５は、メッセージキューデータベース３０に登録されているメッセージの数をカウントする（ステップＳ３０１）。そして、登録されているメッセージの数が、予め決められた閾値以上である場合（ステップＳ３０２、Ｙｅｓ）は、メッセージキュー管理装置１０の処理モードを速度優先モードとする（ステップＳ３０３）。また、登録されているメッセージの数が、予め決められた閾値未満である場合（ステップＳ３０２、Ｎｏ）は、メッセージキュー管理装置１０の処理モードを整合性優先モードとする（ステップＳ３０４）。
【００６９】
［第２の実施形態の効果］
メッセージキュー管理装置１０の処理モード制御部２０５は、メッセージキューデータベース３０に記憶されているメッセージの数が所定の閾値以上である場合は、順序識別子制御部２０２および取得カウンタ制御部２０３の処理を停止させる。これによって、受信者が受信するメッセージの整合性、および処理速度のどちらを優先するかを、状況に応じて切り替えることが可能となる。
【００７０】
［その他の実施形態］
上記の実施形態におけるメッセージキューデータベース３０は、複数のデータベースで分散処理を行うことによっても実現できる。その際は、例えば、同一のユーザから送信されたメッセージは同一のデータベースに登録することとすることによって、順序識別子制御部２０２や取得カウンタ制御部２０３によるメッセージの整合性を保つための処理がより確実に実行されるようになる。また、複数データベースによる分散処理と、第２の実施形態における速度優先モードとを合わせて実施することで、さらに処理速度を向上させることができる。
【００７１】
［システム構成等］
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵ（Central  Processing  Unit）および当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。例えば、順序識別子制御部２０２と取得カウンタ制御部２０３とをＤＢアダプタ２０４の機能として統合してもよい。
【００７２】
また、本実施形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００７３】
［プログラム］
また、上記実施形態に係るメッセージキュー管理装置１０が実行する処理をコンピュータが実行可能な言語で記述したプログラムとして作成することもできる。この場合、コンピュータがプログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかるプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、メッセージキュー管理装置１０と同様の機能を実現するメッセージキュー管理プログラムを実行するコンピュータの一例を説明する。
【００７４】
図１３は、メッセージキュー管理プログラムを実行するコンピュータを示す図である。図１３に示すように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有する。これらの各部は、バス１０８０によって接続される。
【００７５】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１およびＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。ディスクドライブ１１００には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース１０５０には、例えば、マウス１１１０およびキーボード１１２０が接続される。ビデオアダプタ１０６０には、例えば、ディスプレイ１１３０が接続される。
【００７６】
ここで、図１３に示すように、ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３およびプログラムデータ１０９４を記憶する。上記実施形態で説明した各テーブルは、例えばハードディスクドライブ１０９０やメモリ１０１０に記憶される。
【００７７】
また、メッセージキュー管理プログラムは、例えば、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、ハードディスクドライブ１０９０に記憶される。具体的には、上記実施形態で説明したメッセージキュー管理装置１０が実行する各処理が記述されたプログラムモジュールが、ハードディスクドライブ１０９０に記憶される。
【００７８】
またメッセージキュー管理プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、ハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して、上述した各手順を実行する。
【００７９】
なお、メッセージキュー管理プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、メッセージキュー管理プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ＬＡＮ（Local  Area  Network）やＷＡＮ（Wide  Area  Network）等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００８０】
１  メッセージキューシステム
２  送信者
３  受信者
１０  メッセージキュー管理装置
２０  ユーザ情報データベース
３０  メッセージキューデータベース
１００  入出力部
１０１  メッセージキューＧＵＩ
１０２  メッセージキューＡＰＩ
２００  制御部
２０１  権限制御部
２０２  順序識別子制御部
２０３  取得カウンタ制御部
２０４  ＤＢアダプタ
２０５  処理モード制御部
【図１】
2016206788.tif 000003
【図２】
2016206788.tif 000004
【図３】
2016206788.tif 000005
【図４】
2016206788.tif 000006
【図５】
2016206788.tif 000007
【図６】
2016206788.tif 000008
【図７】
2016206788.tif 000009
【図８】
2016206788.tif 000010
【図９−１】
2016206788.tif 000011
【図９−２】
2016206788.tif 000012
【図９−３】
2016206788.tif 000013
【図１０】
2016206788.tif 000014
【図１１】
2016206788.tif 000015
【図１２】
2016206788.tif 000016
【図１３】
2016206788.tif 000017