(57)【特許請求の範囲】
【請求項１】
ブローカと接続可能であり、当該ブローカを介してサーバとの間でトピック別に関連付けられているメッセージを送受信するクライアントであって、
前記ブローカとの間で、前記メッセージのうち第１のメッセージを送受信するための第１のコネクションと、第２のメッセージを送受信するための第２のコネクションとを確立する接続処理部と、
前記ブローカに対し、第１のトピックを指定して、当該第１のトピックに関連付けられた前記第１のメッセージを前記第１のコネクションを用いて購読することを要求し、第２のトピックを指定して、当該第２のトピックに関連付けられた前記第２のメッセージを、前記第２のコネクションを用いて購読することを要求する購読要求部と、
前記ブローカに対し、第３のトピックに関連付けた前記第１のメッセージを前記第１のコネクションを用いて送信し、第４のトピックに関連付けた前記第２のメッセージを前記第２のコネクションを用いて送信するメッセージ送信部と、
を備えるクライアント。
【請求項２】
前記接続処理部は、前記ブローカに対して購読を要求している前記第２のメッセージを、前記第２のコネクションが切断されている間、前記ブローカに蓄積することを要求する、
請求項１に記載のクライアント。
【請求項３】
前記サーバとの間で認証を行う認証処理部を更に備え、
前記認証処理部は、前記ブローカとの間で前記第１のコネクションが確立された後、前記第１のコネクションを用いて前記サーバとの認証に用いられるトピックに関連付けられた前記第１のメッセージを送受信する、
請求項１または２に記載のクライアント。
【請求項４】
クライアント及びサーバとネットワークを介して接続可能とされ、前記クライアント及び前記サーバの間におけるトピック別に関連付けられているメッセージの送受信を仲介するブローカであって、
前記クライアントとの接続を行う際に用いられる接続情報として、前記メッセージのうち、第１のメッセージを送受信するための第１のコネクションの接続情報と、第２のメッセージを送受信するための第２のコネクションの接続情報とを前記クライアント別に記憶する接続情報記憶部と、
前記クライアントの要求に基づいて、第１のトピック及び前記第１のコネクションの接続情報を紐付けた購読情報と、第２のトピック及び前記第２のコネクションの接続情報を紐付けた購読情報と、を記憶する購読情報記憶部と、
前記購読情報に基づいて、前記第１のコネクションが確立されている間、前記第１のトピックに関連付けられた前記第１のメッセージを前記第１のコネクションを用いて前記クライアントへ配信し、前記第２のコネクションが確立されている間、前記第２のトピックに関連付けられた前記第２のメッセージを前記第２のコネクションを用いて配信し、前記第２のコネクションが切断されている間、前記第２のトピックに関連付けられた前記第２のメッセージを蓄積するメッセージ配信部と、
を備えるブローカ。
【請求項５】
請求項１から３の何れか一項に記載のクライアントと、
請求項４に記載のブローカと、
前記ブローカを介して前記クライアントとの間でメッセージの送受信を行うサーバと、
を備える通信システム。
【請求項６】
ブローカを介してクライアントとサーバとの間でトピック別にメッセージを送受信する通信方法であって、
前記ブローカと前記クライアントとの間で、前記メッセージのうち第１のメッセージを送受信するための第１のコネクションと、第２のメッセージを送受信するための第２のコネクションとを確立するステップと、
前記ブローカに対し、第１のトピックを指定して、当該第１のトピックに関連付けられた前記第１のメッセージを前記第１のコネクションを用いて購読することを要求し、第２のトピックを指定して、当該第２のトピックに関連付けられた前記第２のメッセージを、前記第２のコネクションを用いて購読することを要求するステップと、
前記ブローカに対し、第３のトピックに関連付けた前記第１のメッセージを前記第１のコネクションを用いて送信し、第４のトピックに関連付けた前記第２のメッセージを前記第２のコネクションを用いて送信するステップと、
を有する通信方法。
【請求項７】
ブローカと接続可能であり、当該ブローカを介してサーバとの間でトピック別にメッセージを送受信するクライアントのコンピュータを機能させるプログラムであって、当該プログラムは当該コンピュータを、
前記ブローカとの間で、前記メッセージのうち第１のメッセージを送受信するための第１のコネクションと、第２のメッセージを送受信するための第２のコネクションとを確立する接続処理部、
前記ブローカに対し、第１のトピックを指定して、当該第１のトピックに関連付けられた前記第１のメッセージを前記第１のコネクションを用いて購読することを要求し、第２のトピックを指定して、当該第２のトピックに関連付けられた前記第２のメッセージを、前記第２のコネクションを用いて購読することを要求する購読要求部、
前記ブローカに対し、第３のトピックに関連付けた前記第１のメッセージを前記第１のコネクションを用いて送信し、第４のトピックに関連付けた前記第２のメッセージを前記第２のコネクションを用いて送信するメッセージ送信部、
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアント、ブローカ、通信システム、通信方法及びプログラムに関する。
【背景技術】
【０００２】
クライアントとサーバとの間で情報を送受信する通信システムとして、例えば特許文献１では、ブローカ（中間サーバ）が、車載器等のクライアントが取得した車両情報等を収集してサーバへ送信するとともに、サーバから送信されたメッセージを各クライアントへ配信する通信システムが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−８１８７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述のシステムでは、車載器等のクライアントとブローカとの通信が切断された場合、当該クライアントは必要なメッセージを送受信する機会を逸してしまう場合がある。このため、例えばMQTT（Message Queue Telemetry Transport）のようなPublish/subscribe型のプロトコルを用いた通信システムでは、ブローカは、クライアントとの通信が切断されている間にサーバから送信されたメッセージを蓄積し、当該クライアントとの通信を再接続した直後に蓄積されたメッセージを一括配信する機能を有している。
しかしながら、蓄積されたメッセージの一括配信中に、例えばクライアントとサーバとの間の認証処理等、即時送信及び送達確認が必要なメッセージの送受信が要求された場合、一括配信が完了するまで当該要求に応じたメッセージの送受信を行うことができない。この結果、蓄積されたメッセージの容量が大きいと、即時送信及び送達確認が必要なメッセージの送受信が遅延して、要求される時間内に認証処理等を行うことができなくなる可能性がある。【０００５】
本発明は、このような課題に鑑みてなされたものであって、再接続時に実行される蓄積されたメッセージの一括配信処理によって、即時送信が必要とされるメッセージの送受信が遅延することを抑制することができるクライアント、ブローカ、通信システム、通信方法及びプログラムを提供する。
【課題を解決するための手段】
【０００６】
本発明の第一の態様に係るクライアント（１０）は、ブローカ（２０）と接続可能であり、当該ブローカを介してサーバ（３０）との間でトピック別に関連付けられているメッセージを送受信するクライアントであって、前記ブローカとの間で、前記メッセージのうち第１のメッセージを送受信するための第１のコネクションと、第２のメッセージを送受信するための第２のコネクションとを確立する接続処理部（１０１）と、前記ブローカに対し、第１のトピックを指定して、当該第１のトピックに関連付けられた前記第１のメッセージを前記第１のコネクションを用いて購読することを要求し、第２のトピックを指定して、当該第２のトピックに関連付けられた前記第２のメッセージを、前記第２のコネクションを用いて購読することを要求する購読要求部（１０２）と、
前記ブローカに対し、第３のトピックに関連付けた前記第１のメッセージを前記第１のコネクションを用いて送信し、第４のトピックに関連付けた前記第２のメッセージを前記第２のコネクションを用いて送信するメッセージ送信部（１０３）と、を備える。
このような構成を有することにより、ブローカとクライアントとの再接続後に、ブローカが蓄積されたメッセージの一括配信処理を行う場合であっても、クライアントは、第１のコネクション及び第２のコネクションの一方を用いて一括配信されたメッセージを購読（受信）するとともに、他方を用いて即時送信が必要とされるメッセージの送受信を並行して行うことができる。従って、クライアントは、一括配信されたメッセージの受信処理により、即時送信が必要とされるメッセージの送受信が遅延することを抑制することができる。【０００７】
本発明の第二の態様によれば、上述の態様に記載のクライアントにおいて、前記接続処理部は、前記ブローカに対して購読を要求している前記第２のメッセージを、前記第２のコネクションが切断されている間、前記ブローカに蓄積することを要求する。
このような構成を有することにより、クライアントは、ブローカとの第２のコネクションが切断されている間、第２のメッセージをブローカに蓄積させることができる。そして、クライアントは、第２のコネクションが再接続された後に、ブローカから蓄積された第２のメッセージの一括配信を受けることにより、第２のメッセージの取りこぼしを抑制することが可能となる。【０００８】
本発明の第三の態様によれば、上述の何れか一の態様に記載のクライアントは、前記サーバとの間で認証を行う認証処理部（１０４）を更に備え、前記認証処理部は、前記ブローカとの間で前記第１のコネクションが確立された後、前記第１のコネクションを用いて前記サーバとの認証に用いられるトピックに関連付けられた前記第１のメッセージを送受信する。
このような構成を有することにより、クライアントは、ブローカから一括配信された第２のメッセージを第２のコネクションを用いて受信中であっても、サーバとの認証処理に用いられる即時送信が必要とされる第１のメッセージを、第１のコネクションを用いて送受信することができる。これにより、サーバとの認証処理に関するメッセージの送受信が遅延することがなく、要求された時間内に認証処理が完了しない等の処理の失敗を抑制することができる。【０００９】
本発明の第四の態様によれば、ブローカは、クライアント及びサーバとネットワークを介して接続可能とされ、前記クライアント及び前記サーバ間におけるトピック別に関連付けられているメッセージの送受信を仲介するブローカであって、前記クライアントとの接続を行う際に用いられる接続情報として、前記メッセージのうち、第１のメッセージを送受信するための第１のコネクションの接続情報と、第２のメッセージを送受信するための第２のコネクションの接続情報とを前記クライアント別に記憶する接続情報記憶部（２０１）と、前記クライアントの要求に基づいて、第１のトピック及び前記第１のコネクションの接続情報を紐付けた購読情報と、第２のトピック及び前記第２のコネクションの接続情報を紐付けた購読情報と、を記憶する購読情報記憶部（２０２）と、前記購読情報に基づいて、前記第１のコネクションが確立されている間、前記第１のトピックに関連付けられた前記第１のメッセージを前記第１のコネクションを用いて前記クライアントへ配信し、前記第２のコネクションが確立されている間、前記第２のトピックに関連付けられた前記第２のメッセージを前記第２のコネクションを用いて配信し、前記第２のコネクションが切断されている間、前記第２のトピックに関連付けられた前記第２のメッセージを蓄積するメッセージ配信部（２０３）と、を備える。
このような構成を有することにより、ブローカは、クライアントとの第１のコネクション及び第２のコネクションが切断されている間、第１のメッセージは蓄積せず、第２のメッセージを蓄積する。このため、ブローカは、クライアントと第１のコネクション及び第２のコネクションが再接続された後、第１のメッセージの一括配信は行わず、第２のメッセージの一括配信を行うことができる。この結果、ブローカは、クライアントと第１のコネクション及び第２のコネクションが再接続された後、第２のコネクションを用いて蓄積された第２のメッセージの一括配信を継続したまま、第１のコネクションを用いて即時送信が必要とされる第１のメッセージの配信を並行して行うことができる。従って、ブローカは、蓄積された第２のメッセージの一括配信処理により、即時送信が必要とされる第１のメッセージの送受信が遅延することを抑制することができる。【００１０】
本発明の第五の態様によれば、通信システムは、上述の何れか一の態様に記載のクライアントと、上述の態様に記載のブローカと、前記ブローカを介して前記クライアントとの間でメッセージの送受信を行うサーバと、を備える。【００１１】
本発明の第六の態様によれば、通信方法は、ブローカを介してクライアントとサーバとの間でトピック別にメッセージを送受信する通信方法であって、前記ブローカと前記クライアントとの間で、前記メッセージのうち第１のメッセージを送受信するための第１のコネクションと、第２のメッセージを送受信するための第２のコネクションとを確立するステップと、前記ブローカに対し、第１のトピックを指定して、当該第１のトピックに関連付けられた前記第１のメッセージを前記第１のコネクションを用いて購読することを要求し、第２のトピックを指定して、当該第２のトピックに関連付けられた前記第２のメッセージを、前記第２のコネクションを用いて購読することを要求するステップと、前記ブローカに対し、第３のトピックに関連付けた前記第１のメッセージを前記第１のコネクションを用いて送信し、第４のトピックに関連付けた前記第２のメッセージを前記第２のコネクションを用いて送信するステップと、を有する。【００１２】
本発明の第七の態様によれば、ブローカと接続可能であり、当該ブローカを介してサーバとの間でトピック別にメッセージを送受信するクライアントのコンピュータを機能させるプログラムは、当該コンピュータを、前記ブローカとの間で、前記メッセージのうち第１のメッセージを送受信するための第１のコネクションと、第２のメッセージを送受信するための第２のコネクションとを確立する接続処理部、前記ブローカに対し、第１のトピックを指定して、当該第１のトピックに関連付けられた前記第１のメッセージを前記第１のコネクションを用いて購読することを要求し、第２のトピックを指定して、当該第２のトピックに関連付けられた前記第２のメッセージを、前記第２のコネクションを用いて購読することを要求する購読要求部、前記ブローカに対し、第３のトピックに関連付けた前記第１のメッセージを前記第１のコネクションを用いて送信し、第４のトピックに関連付けた前記第２のメッセージを前記第２のコネクションを用いて送信するメッセージ送信部、として機能させる。
【発明の効果】
【００１３】
上述のクライアント、ブローカ、通信システム、通信方法及びプログラムによれば、再接続時に実行される蓄積されたメッセージの一括配信処理によって、即時送信が必要とされるメッセージの送受信が遅延することを抑制することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態に係る通信システムの全体構成を示す図である。
【図２】本発明の一実施形態に係るクライアント及びブローカの機能構成を示す図である。
【図３】本発明の一実施形態に係るクライアントの購読リストの例を示す図である。
【図４】本発明の一実施形態に係るクライアントの発行リストの例を示す図である。
【図５】本発明の一実施形態に係るブローカの接続情報テーブルの例を示す図である。
【図６】本発明の一実施形態に係るブローカの購読情報テーブルの例を示す図である。
【図７】本発明の一実施形態に係るクライアントの接続処理を説明するための処理フローである。
【図８】本発明の一実施形態に係るクライアントの購読処理を説明するための処理フローである。
【図９】本発明の一実施形態に係るクライアント及びブローカの接続監視処理を説明するための処理フローである。
【図１０】本発明の一実施形態に係るブローカのメッセージ処理を説明するための第１の処理フローである。
【図１１】本発明の一実施形態に係るブローカのメッセージ処理を説明するための第２の処理フローである。
【図１２】本発明の一実施形態に係るクライアント及びブローカのハードウェア構成の例を示す図である。
【発明を実施するための形態】
【００１５】
（通信システムの全体構成）
以下、本発明の一実施形態に係る通信システム１について、図１を参照しながら説明する。
図１は、本発明の一実施形態に係る通信システムの全体構成を示す図である。
本実施形態において、通信システム１は、例えばMQTTを用いたPublish/subscribe型の通信システムである。
図１に示すように、通信システム１は、複数のクライアント１０ａ、１０ｂ、１０ｃ・・・と、ブローカ２０と、サーバ３０とを備えている。なお、以下の説明において、複数のクライアント１０ａ、１０ｂ、１０ｃ・・・を総称して、クライアント１０とも記載する。
【００１６】
クライアント１０は、例えばスマートフォン等の携帯通信端末、車両に搭載される車載器等である。クライアント１０は、無線通信によりブローカ２０と接続可能であり、ブローカ２０を介してサーバ３０との間でメッセージを送受信する。
【００１７】
ブローカ２０は、情報センタ２に設置され、クライアント１０とは無線通信により接続可能であり、サーバ３０とは有線通信により常時接続されている。ブローカ２０は、クライアント１０とサーバ３０との間のメッセージの送受信を仲介する。
【００１８】
サーバ３０は、ブローカ２０と有線通信等により常時接続されており、ブローカ２０を介してクライアント１０との間でメッセージを送受信する。
なお、サーバ３０は、図１に示すように、ブローカ２０と同じ情報センタ２内に設置されたサーバ３０ａを有している。また、サーバ３０は、情報センタ２外に設置されたサーバ（外部サーバ）３０ｂを有していてもよい。このとき、サーバ３０ａ及びサーバ３０ｂは、それぞれ異なる機能を有していてもよい。例えば、サーバ３０ａはクライアント１０が有料道路を使用した際の使用料を課金する機能を有し、サーバ３０ｂは道路別の渋滞情報を送信する機能を有していてもよい。
更に、サーバ３０は一つのサーバ３０ａのみを有し、サーバ３０ａが複数の機能を有するようにしてもよい。
【００１９】
本実施形態の通信システム１では、車載器１０及びサーバ３０は、メッセージをブローカ２０へ送信（発行）するパブリッシャとして機能するとともに、ブローカ２０からメッセージを受信（購読）するサブスクライバ（クライアント）としても機能する。そして、ブローカ２０は、車載器１０及びサーバ３０からメッセージを収集するとともに、車載器１０及びサーバ３０が購読を要求したメッセージを当該車載器１０及びサーバ３０へ配信することにより、車載器１０とサーバ３０との間のメッセージの送受信を仲介する。
なお、車載器１０及びサーバ３０は、ブローカ２０へメッセージを送信する際、及び、メッセージの購読をブローカ２０へ要求する際、トピックを指定して、当該トピックに関連付けられたメッセージの送信及び購読の要求を行う。ブローカ２０は、メッセージと関連付けられたトピックと、車載器１０及びサーバ３０から購読の要求時に指定されたトピックとを照らし合わせることにより、各メッセージの配信先となる車載器１０及びサーバ３０を特定する。
トピックとは、メッセージに含まれる情報の属性を示すものであり、メッセージごとに一つのトピックが指定される。例えば、クライアント１０がメッセージを送信する際に指定するトピックとしては、クライアント１０の現在位置を示すトピック、移動速度を示すトピック、加速度を示すトピック等がある。クライアント１０は、例えば、現在位置を示すトピックを指定して、クライアント１０の現在位置の情報（緯度、経度等）を含むメッセージをブローカ２０へ送信する。
また、例えば、サーバ３０がメッセージを送信する際に指定するトピックとしては、道路別の渋滞情報を示すトピック、サービスエリア等の施設情報を示すトピック、地域別のイベント情報を示すトピック等がある。サーバ３０は、例えば、道路Ｘの渋滞情報を示すトピックを指定して、当該道路Ｘの渋滞情報（混雑状況、交通流等）を含むメッセージをブローカ２０へ送信する。
【００２０】
（クライアントの機能構成）
次に、図２〜図４を参照して、クライアント１０の機能構成を説明する。
図２は、本発明の一実施形態に係るクライアント及びブローカの機能構成を示す図である。
図２に示すように、クライアント１０は、接続処理部１０１と、購読要求部１０２と、メッセージ送信部１０３と、認証処理部１０４と、接続状態監視部１０５と、記憶媒体１１０とを備えている。
【００２１】
接続処理部１０１は、ブローカ２０との間で無線通信接続を行う。
本実施形態において、接続処理部１０１は、ブローカ２０と間にコネクションＡ（第１のコネクション）と、コネクションＢ（第２のコネクション）との二つの無線通信の接続を行う。
【００２２】
本実施形態において、コネクションＡは、即時送信、送達確認、暗号化が必要となるメッセージを送受信するために用いられる。例えば、クライアント１０がサーバ３０、または、サーバ３０が有する機能にアクセスするための認証処理、有料道路の使用料金等を支払うための課金処理等では、所定期間内に必要なメッセージの送受信を行わないと処理が失敗する。つまり、所定期間内に認証処理を完了できるようサーバ３０及びクライアント１０間で必要なメッセージを即時送信すること、サーバ３０とクライアント１０との間で確実にメッセージが届いているかを確認するために送達確認等を行うことが求められる。また、認証処理、課金処理等で送受信するメッセージには、クライアント１０を特定する情報等が含まれるため、暗号化した上でメッセージの送受信を行う必要がある。コネクションＡは、このように即時送信、送達確認、暗号化が必要となる認証情報トピック、課金情報トピック等に関連付けられたメッセージを送受信するために用いられる。なお、以降の説明では、即時送信、送達確認、暗号化が必要となるメッセージを総称して、「至急メッセージ（第１のメッセージ）」と称し、至急メッセージに付されるトピックを「至急トピック」と称する。
【００２３】
一方、コネクションＢは、即時送信、送達確認、暗号化が必要とされないメッセージを送受信するために用いられる。例えば、クライアント１０は、現在位置、移動速度、加速度等のクライアント１０の移動状態を示す移動情報を定期的（例えば１０秒毎）に取得してクライアント別の移動情報トピック（現在位置トピック、移動速度トピック、加速度トピック等）に関連付けられたメッセージをブローカ２０へ送信する。サーバ３０は各クライアント１０の移動情報トピックに関連付けられたメッセージを購読して収集するとともに、移動情報に基づいて道路別の渋滞情報を所定期間（例えば一時間）毎に生成してブローカ２０へ送信する。また、クライアント１０は例えば走行経路に含まれる道路の渋滞情報トピックに関連付けられたメッセージを購読し、必要に応じて新たな移動経路の提案等を行う。このような移動情報トピック、渋滞情報トピックに関連付けられたメッセージでは、メッセージがクライアント１０及びサーバ３０へ確実に届いたかどうかを確認する必要はない。また、このようなメッセージの送受信が遅延した場合であっても、クライアント１０及びサーバ３０では処理が失敗する等の不都合が生じない。コネクションＢは、このように、即時送信、送達確認、暗号化が必要とされない移動情報トピック、渋滞情報トピック等に関連付けられたメッセージを送受信するために用いられる。なお、以降の説明では、即時送信、送達確認、暗号化が必要とされないメッセージを総称して、「通常メッセージ（第２のメッセージ）」と称し、通常メッセージに付されるトピックを「通常トピック」と称する。
なお、各トピックに関連付けられたメッセージを「至急メッセージ」及び「通常メッセージ」の何れで扱うかは、通信システム１別に変更してもよい。例えば、他の実施形態では、現在位置トピックに関連付けられたメッセージには暗号化が必要であるとして、「至急メッセージ」として扱ってもよい。
【００２４】
購読要求部１０２は、ブローカ２０に対し、トピックを指定して、当該トピックに関連付けられたメッセージの購読を要求する。なお、本実施形態の通信システム１では、サーバ３０及びクライアント１０の間で、予めトピックが決められており、購読要求部１０２は、予め決められているトピックから必要なトピックを指定して購読要求を行うようにしてもよい。
図３は、本発明の一実施形態に係るクライアントの購読リストの例を示す図である。
本実施形態では、購読要求部１０２は、図３に示すように、購読を要求する情報を指定する「トピック」と、当該トピックに関連付けられたメッセージの購読を行う際に用いる「接続種別」とを紐付けた購読リストＤ１１を記憶媒体１１０に記憶している。
「接続種別」とは、コネクションＡ及びコネクションＢの何れを用いてメッセージを購読するかを示す情報である。購読要求部１０２は、メッセージの内容に基づいて接続種別を設定する。購読要求部１０２は、例えば、認証処理、課金処理等を行うためのメッセージの購読を要求する場合は、これらメッセージは遅延なく購読する必要がある至急メッセージである。このため、購読要求部１０２は、至急メッセージの購読に使われる至急トピック（第１のトピック）については、接続種別にコネクションＡを設定する。また、例えば、購読要求部１０２は、道路別の渋滞情報等の通常メッセージの購読に使われる通常トピック（第２のトピック）については、接続種別にコネクションＢを設定する。即ち、購読要求部１０２は、ブローカ２０に対し、至急トピック（第１のトピック）を指定して購読要求を行う場合、当該至急トピックに関連付けられた至急メッセージをコネクションＡを用いて購読することを要求する。また、購読要求部１０２は、ブローカ２０に対し、通常トピック（第２のトピック）を指定して購読要求を行う場合、当該通常トピックに関連付けられた通常メッセージをコネクションＢを用いて購読することを要求する。
なお、購読要求部１０２は、購読が不要となったトピックを購読リストＤ１１から削除するようにしてもよい。
購読要求部１０２は、コネクションＡ及びコネクションＢの確立時、及び、購読リストＤ１１の更新時の少なくとも一方において、ブローカ２０に対してトピックと、接続情報とを指定して、各トピックに関連付けられたメッセージの購読を要求する。
【００２５】
メッセージ送信部１０３は、メッセージの内容に応じた接続種別（コネクションＡ及びコネクションＢ）を用いて、メッセージ別にトピックを関連付けたメッセージを、ブローカ２０へ送信する。なお、本実施形態の通信システム１では、サーバ３０及びクライアント１０の間で、予めトピックが決められており、メッセージ送信部１０３は、予め決められているトピックから必要なトピックを関連付けたメッセージを、ブローカ２０へ送信する。また、本実施形態において、メッセージ送信部１０３は、コネクションＡを用いて送信するメッセージは暗号化をした上で送信を行い、コネクションＢを用いて送信するメッセージは暗号化をせずに送信を行う。
【００２６】
図４は、本発明の一実施形態に係るクライアントの発行リストの例を示す図である。
本実施形態では、メッセージ送信部１０３は、図４に示すように、送信するメッセージの内容に応じて予め定められた「トピック」と、当該トピックを関連付けたメッセージを送信する際に用いる「接続種別」とを紐付けた発行リストＤ１２を記憶媒体１１０に記憶している。
例えば、認証処理、課金処理等を行うためのメッセージを送信する場合は、これらメッセージは遅延なく送信する必要がある至急メッセージである。このため、メッセージ送信部１０３は、至急メッセージの送信に使われる至急トピック（第３のトピック）については、接続種別にコネクションＡを設定する。また、例えば、メッセージ送信部１０３は、クライアント１０の移動速度等の通常メッセージの送信に使われる通常トピック（第４のトピック）については、接続種別にコネクションＢを設定する。即ち、メッセージ送信部１０３は、ブローカ２０に対し、至急トピック（第３のトピック）を関連付けた至急メッセージをコネクションＡを用いて送信する。また、メッセージ送信部１０３は、ブローカ２０に対し、通常トピック（第４のトピック）を関連付けた通常メッセージをコネクションＢを用いて送信する。
なお、メッセージ送信部１０３は、送信が不要となったトピックを発行リストＤ１２から削除するようにしてもよい。
【００２７】
認証処理部１０４は、接続処理部１０１がブローカ２０との接続を完了した後に、必要に応じてサーバ３０にアクセスするための認証、または、サーバ３０の有する機能にアクセスするための認証を求める処理を行う。
なお、本実施形態において、認証処理部１０４は、サーバ３０との認証処理に関連するトピックは「至急トピック」として扱う。このため、認証処理部１０４が送信するメッセージは、全てコネクションＡを用いて、暗号化された上で送信される。また、認証処理部１０４が購読するメッセージは、全てコネクションＡを用いて購読され、認証処理部１０４において復号化される。
【００２８】
接続状態監視部１０５は、コネクションＡにおけるブローカとの無線通信接続の状態、及び、コネクションＢにおけるブローカ２０との無線通信接続の状態を監視する。本実施形態では、接続状態監視部１０５は、コネクションＡ及びコネクションＢが正常に接続されているか否かを監視する。
【００２９】
記憶媒体１１０は、ブローカ２０との通信に関連する各種情報を記憶する。また、記憶媒体１１０には、購読要求部１０２が更新する購読リストＤ１１と、メッセージ送信部１０３が更新する発行リストＤ１２とが記憶されている。
【００３０】
（ブローカの機能構成）
次に、図２及び図５〜図６を参照して、ブローカ２０の機能構成を説明する。
図２に示すように、ブローカ２０は、ＭＱＴＴ機能部２００と、記憶媒体２１０とを備えている。また、ＭＱＴＴ機能部２００は、接続情報記憶部２０１と、購読情報記憶部２０２と、メッセージ配信部２０３と、クライアント接続監視部２０４と、を有している。
【００３１】
図５は、本発明の一実施形態に係るブローカの接続情報テーブルの例を示す図である。
接続情報記憶部２０１は、図５に示すように、クライアント１０との接続に用いられる接続情報を接続情報テーブルＤ２１に追加して、記憶媒体２１０に記憶する。
接続情報テーブルＤ２１は、クライアント１０を特定可能な「クライアントＩＤ」と、「接続種別」と、当該クライアント１０との接続に用いられる「接続ＩＤ」及び「パスワード」と、「メッセージ蓄積要否」と、「購読情報記憶要否」とを関連付けた接続情報を、クライアント別に蓄積するテーブルである。「接続種別」は、クライアント１０が指定する接続種別であって、コネクションＡ及びコネクションＢの何れかが設定される。「接続ＩＤ」及び「パスワード」は、クライアント１０と接続種別との組み合わせを識別するための情報であり、当該組み合わせ別に異なるＩＤ及びパスワードが設定されている。「メッセージ蓄積要否」は、クライアント１０が指定する設定であって、クライアント１０との接続が切断されている間にブローカ２０が収集したメッセージのうち、クライアント１０が購読を要求しているメッセージを蓄積し、当該クライアント１０と再接続されたときに蓄積されたメッセージを一括送信（一括配信）するか否かを示す設定である。「購読情報記憶要否」は、クライアント１０が指定する設定であって、クライアント１０とブローカ２０との接続が切断された場合、クライアント１０から購読要求されたトピックを含む購読情報（後述）を記憶するか否かを示す設定である。
なお、他の実施形態では、「クライアントＩＤ」及び「接続種別」を省略し、「接続ＩＤ」のみを記憶する態様であってもよい。この場合、接続情報記憶部２０１は、一のクライアント（例えばクライアント１０ａ）が二つの接続種別によりブローカ２０との接続を行うことを認識せず、接続ＩＤ別に異なる接続を行うことのみを認識するようにしてもよい。
【００３２】
図６は、本発明の一実施形態に係るブローカの購読情報テーブルの例を示す図である。
購読情報記憶部２０２は、図６に示すように、トピックと、当該トピックの購読を要求している配信先であるクライアント１０及びサーバ３０を特定可能な接続情報と、を紐付けた購読情報を購読情報テーブルＤ２２に追加して、記憶媒体２１０に記憶する。また、購読情報記憶部２０２は、クライアント１０との接続が切断された場合、且つ、接続情報テーブルＤ２１において当該クライアント１０の「購読設定記憶要否」が「不要」である場合、購読情報テーブルＤ２２から当該クライアント１０に関連する購読情報を削除する。
購読情報テーブルＤ２２は、クライアント１０及びサーバ３０を特定可能な接続情報と、当該クライアント１０及びサーバ３０が購読を要求している「トピック」とを関連付けて蓄積するテーブルである。なお、本実施形態において、購読情報テーブルＤ２２には、接続情報の一部、具体的には、「クライアントＩＤ」と「接続種別」とが記録されている。また、他の実施形態においては、購読情報テーブルＤ２２には、接続情報の他の情報（「接続ＩＤ」、「パスワード」等）が更に記録されていてもよい。
なお、「クライアントＩＤ」がサーバ３０を示す場合、「接続種別」は設定されていなくてもよい。また、他の実施形態では、「クライアントＩＤ」及び「接続種別」に代えて、「接続ＩＤ」を記憶する態様であってもよい。
【００３３】
メッセージ配信部２０３は、クライアント１０及びサーバ３０から送信（発行）されたメッセージを、購読情報テーブルＤ２２に基づいて、当該メッセージの購読を要求している配信先であるクライアント１０及びサーバ３０へ配信する。メッセージ配信部２０３は、各メッセージの購読を要求している配信先を、各メッセージに指定されたトピックをキーにして、購読情報テーブルＤ２２から検索して抽出する。そして、メッセージ配信部２０３は、抽出した配信先に対し、当該トピックに関連付けられたメッセージを配信する。なお、配信先がクライアント１０である場合は、購読情報テーブルＤ２２に基づいて、コネクションＡ及びコネクションＢの何れかを用いて、クライアント１０へメッセージを送信する。
また、メッセージ配信部２０３は、メッセージの購読を要求しているクライアント１０との接続が切断されている場合、且つ、接続情報テーブルＤ２１の「メッセージ蓄積要否」が「要」に設定されている場合、当該クライアントが購読を要求しているトピックに対するメッセージを記憶媒体２１０に記憶して蓄積する。そして、メッセージ配信部２０３は、当該クライアント１０と再接続されたときに、蓄積されたメッセージを記憶媒体２１０から読み出して一括配信する。
【００３４】
クライアント接続監視部２０４は、クライアント１０との接続の状態を監視する。本実施形態では、クライアント接続監視部２０４は、クライアント１０のコネクションＡ及びコネクションＢが、それぞれ正常に接続されているか否かを監視する。
【００３５】
記憶媒体２１０には、クライアント１０及びサーバ３０から送信されたメッセージが記憶されるとともに、接続情報記憶部２０１が更新する接続情報テーブルＤ２１と、購読情報記憶部２０２が更新する購読情報テーブルＤ２２とが記憶されている。
【００３６】
（クライアントの起動時の処理）
次に、図７〜図８を参照してクライアント１０の接続処理の一連の流れを説明する。
図７は、本発明の一実施形態に係るクライアントの接続処理を説明するための処理フローである。
図８は、本発明の一実施形態に係るクライアントの購読処理を説明するための処理フローである。
図７に示すように、クライアント１０が起動、または無線通信圏内に進入すると、クライアント１０は無線通信可能状態となる（Ｓ１０１）。
クライアント１０が無線通信可能状態となると、クライアント１０の接続処理部１０１は、ブローカ２０とコネクションＡの接続処理を行う（ステップＳ１０２）。
具体的には、接続処理部１０１は、コネクションＡの接続情報（「クライアントＩＤ」、「接続種別（コネクションＡ）」、「接続ＩＤ」、「パスワード」、「メッセージ蓄積要否」及び「購読情報記憶要否」）を含む接続要求メッセージをブローカ２０へ送信する。なお、本実施形態において、コネクションＡの「メッセージ蓄積要否」は常に「不要（メッセージを蓄積しない）」に設定される。これにより、コネクションＡでは、ブローカ２０はメッセージの蓄積を行わず、また、蓄積されたメッセージの一括配信が行われることがないので、至急メッセージの送受信を遅延なく行うことができるようになる。そして、接続処理部１０１は、ブローカ２０から接続要求メッセージに対する応答メッセージを受信すると、コネクションＡの接続処理を終了して次のステップへ進む。
【００３７】
コネクションＡが確立すると、クライアント１０の購読要求部１０２は、記憶媒体１０６に記憶されている購読リストＤ１１（図３）に基づいて、コネクションＡを用いて購読するメッセージの購読処理を行う（ステップＳ１０３）。
具体的には、購読要求部１０２は、図８に示すように、まず、ブローカ２０とのコネクションＡの接続が初めてであるか否かを判断する（ステップＳ１１１）。ブローカ２０とのコネクションＡの接続が初めてではない場合（ステップＳ１１１：ＮＯ）、購読要求部１０２は、当該コネクションＡの「購読情報記憶要否」が「不要（記憶しない）」に設定されているか否かを判断する（ステップＳ１１２）。コネクションＡの「購読情報記憶要否」が「要」に設定されている場合（ステップＳ１１２：ＮＯ）、ブローカ２０にはクライアント１０のコネクションＡに関連する購読情報が記憶されているため、購読要求部１０２は購読処理を終了する。
一方、ブローカ２０とのコネクションＡの接続が初めてである場合（ステップＳ１１１：ＹＥＳ）、または、コネクションＡの「購読情報記憶要否」が「不要」に設定されている場合（ステップＳ１１２：ＹＥＳ）、ブローカ２０にはクライアント１０のコネクションＡに関連する購読情報が記憶されていないため、購読要求部１０２は、購読要求メッセージをブローカ２０へ送信する（ステップＳ１１３）。このとき、購読要求部１０２は、購読リストＤ１１に記憶されているトピックのうち、「接続種別」が「コネクションＡ」であるトピックを抽出する。そして、購読要求部１０２は、抽出した「トピック」と、「クライアントＩＤ」及び「接続種別（コネクションＡ）」とを含む購読要求メッセージをブローカ２０へ送信する。
図３の例では、購読要求部１０２は、購読リストＤ１１から「接続種別」が「コネクションＡ」であるトピックとして、認証情報トピック、課金情報トピックを抽出する。そして、購読要求部１０２は、抽出した認証情報トピック、課金情報トピックを指定して、各トピックに関連付けられたメッセージをコネクションＡを用いて購読することを要求するメッセージを、ブローカ２０へ送信する。
購読要求部１０２は、ブローカ２０から購読要求メッセージに対する応答メッセージを受信すると、コネクションＡの購読処理を終了して次のステップへ進む。
【００３８】
次に、図７示すように、認証処理部１０４は、サーバ３０へアクセスするため、または、サーバ３０が有する機能へアクセスするための認証処理を行う（ステップＳ１０４）。
具体的には、認証処理部１０４は、記憶媒体１１０に記憶されている発行リストＤ１２に基づいて、クライアント１０の認証情報トピックを指定して、コネクションＡを用いてメッセージを送信する。このとき、認証処理部１０４は、当該メッセージを暗号化して送信する。
また、認証処理部１０４は、ブローカ２０からクライアント１０の認証情報トピックに関連付けられたメッセージ（サーバ３０から送信された応答メッセージ）を受信すると、当該メッセージを復号化してメッセージの内容を解析する。認証処理部１０４は、サーバ３０からのメッセージに対する応答が必要である場合は、更に認証情報トピックに関連付けられたメッセージを、暗号化した上で、コネクションＡを用いて送信する。
このように、クライアント１０の認証に関連するトピックに対するメッセージを、ブローカ２０を介してサーバとの間で送受信することにより、認証処理部１０４はサーバ３０との認証処理を行う。認証処理部１０４が認証処理を完了すると、次のステップへ進む。
【００３９】
また、クライアント１０が無線通信可能状態となると、クライアント１０の接続処理部１０１は、ブローカ２０とコネクションＢの接続処理を行う（ステップＳ１０５）。
具体的には、接続処理部１０１は、コネクションＢの接続情報（「クライアントＩＤ」、「接続種別（コネクションＢ）」、「接続ＩＤ」、「パスワード」、「メッセージ蓄積要否」及び「購読情報記憶要否」）を含む接続要求メッセージをブローカ２０へ送信する。なお、本実施形態では、コネクションＢの「メッセージ蓄積要否」は「要（蓄積される）」が設定されている態様で説明する。これにより、クライアント１０は、ブローカ２０とのコネクションＢが切断されている間に送信されたメッセージのうち、クライアント１０が購読を要求したトピックに関連付けられたメッセージをブローカ２０に蓄積させておき、コネクションＢの再接続後に蓄積されたメッセージを一括受信することができる。なお、他の実施形態では、クライアント別に「メッセージ蓄積要否」の設定を変えてもよい。
そして、接続処理部１０１は、ブローカ２０から接続要求メッセージに対する応答メッセージを受信すると、コネクションＢの接続処理を終了して次のステップへ進む。
【００４０】
クライアント１０の購読要求部１０２は、コネクションＢが確立すると、記憶媒体１０６に記憶されている購読リストＤ１１に基づいて、コネクションＢを用いて購読するトピックの購読処理を行う（ステップＳ１０６）。
具体的には、購読要求部１０２は、コネクションＡの購読処理（ステップＳ１０３）と同様に、図８に示すブローカ２０とのコネクションＢの接続が初めてであるか否かの判断（ステップＳ１１１）、及び、当該コネクションＢの「購読情報記憶要否」が「不要（記憶しない）」に設定されているか否かの判断（ステップＳ１１２）を行う。ブローカ２０とのコネクションＢの接続が初めてではない場合（ステップＳ１１１：ＮＯ）、且つ、コネクションＢの「購読情報記憶要否」が「要」に設定されている場合（ステップＳ１１２：ＮＯ）、ブローカ２０にはクライアント１０のコネクションＢに関連する購読情報が記憶されているため、購読要求部１０２は購読処理を終了する。
一方、ブローカ２０とのコネクションＢの接続が初めてである場合（ステップＳ１１１：ＹＥＳ）、または、コネクションＢの「購読情報記憶要否」が「不要」に設定されている場合（ステップＳ１１２：ＹＥＳ）、ブローカ２０にはクライアント１０のコネクションＢに関連する購読情報が記憶されていないため、購読要求部１０２は、購読要求メッセージをブローカ２０へ送信する（ステップＳ１１３）。このとき、購読要求部１０２は、購読リストＤ１１に記憶されているトピックのうち、「接続種別」が「コネクションＢ」であるトピックを抽出する。そして、購読要求部１０２は、抽出したトピックと、「クライアントＩＤ」及び「接続種別（コネクションＢ）」とを含む購読要求メッセージをブローカ２０へ送信する。
図３の例では、購読要求部１０２は、購読リストＤ１１から「接続種別」が「コネクションＢ」であるトピックとして、道路Ｘの渋滞情報トピック、道路Ｘのサービスエリア（ＳＡ）情報トピックを抽出する。そして、購読要求部１０２は、抽出した道路Ｘの渋滞情報トピック、道路ＸのＳＡ情報トピックを指定して、各トピックに関連付けられたメッセージをコネクションＢを用いて購読することを要求するメッセージを、ブローカ２０へ送信する。
購読要求部１０２は、ブローカ２０から購読要求メッセージに対する応答メッセージを受信すると、コネクションＢの購読処理を終了する。
【００４１】
このように、購読要求部１０２が、コネクションＡ及びコネクションＢのそれぞれにおいて購読処理を行うことにより、「至急メッセージ」の購読をコネクションＡで行い、「通常メッセージ」の購読をコネクションＢで行うように、メッセージの内容に応じて異なるコネクションを用いてメッセージを購読することができる。
【００４２】
なお、図７の処理フローは一例であり、処理の順番はこの限りではない。例えば、購読処理は、コネクションＡ及びコネクションＢが確立した後に一回のみ行われるのではなく、複数回行うようにしてもよい。即ち、購読要求部１０２は、クライアント１０の状態に応じて購読するトピックを変更し、変更を行う度に、購読処理を行ってブローカ２０へ購読要求メッセージを送信するようにしてもよい。具体的には、購読要求部１０２は、クライアント１０の現在位置に基づいて、クライアント１０が位置する道路Ｙの渋滞情報トピックを購読リストＤ１１に追加し、クライアント１０が通過済みの道路Ｘの渋滞情報トピックを購読リストＤ１１から削除して、購読リストＤ１１を変更してもよい。そして、購読要求部１０２は、購読リストＤ１１の変更を行った場合、ブローカ２０に対し購読要求メッセージを送信する。
【００４３】
また、購読要求部１０２は、例えば有料道路の課金処理を行うためにサーバ３０からメッセージを受信する場合は、当該課金処理に関する課金情報トピックを購読リストＤ１１に追加する。このとき、購読要求部１０２は、課金情報トピックは「至急トピック」であると判断し、接続種別を「コネクションＡ」に設定する。このようにすることで、クライアント１０は、有料道路の課金処理を行う直前にブローカ２０との接続が確立した場合であって、課金処理と同じタイミングでブローカ２０から蓄積された渋滞情報トピックに関連付けられたメッセージの一括配信が行われた場合であっても、課金情報トピックに関連付けられたメッセージはコネクションＡを用いて送受信され、渋滞情報トピックに関連付けられたメッセージの一括配信はコネクションＢを用いて行われる。これにより、課金情報トピックに関連付けられたメッセージの送受信が一括配信により遅延することが抑制されるため、クライアント１０及びサーバ３０は、クライアント１０が課金処理に必要なメッセージの送受信を完了する前に有料道路の料金所を通過してしまう可能性を低減させることができる。
【００４４】
（クライアント及びブローカの接続監視処理）
次に、図９を参照して、クライアント１０及びブローカ２０の接続監視処理について説明する。
図９は、本発明の一実施形態に係るクライアント及びブローカの接続監視処理を説明するための処理フローである。
以下、クライアント１０のコネクションＡの接続監視処理を例として説明するが、クライアント１０のコネクションＢについても同様の接続監視処理が行われる。
【００４５】
図９のパターン１は、クライアント１０が無線通信圏内に位置している場合の接続監視処理の流れを示す例である。
クライアント１０の接続状態監視部１０５は、ブローカ２０との間でコネクションＡが確立すると、所定の接続判定時間（例えば６０秒）ごとに、コネクションＡを用いてブローカ２０へ接続確認メッセージを送信する（ステップＳ２０１）。
【００４６】
ブローカ２０のクライアント接続監視部２０４は、クライアント１０との間でコネクションＡが確立すると、接続判定時間以内にコネクションＡを用いて接続確認メッセージを受信したか否かに基づいて、クライアント１０との接続状態を確認する（ステップＳ２０２）。ブローカ２０のクライアント接続監視部２０４は、クライアント１０から接続確認メッセージを受信した場合、当該クライアント１０との接続が正常に保たれていると判断する。このとき、ブローカ２０のクライアント接続監視部２０４は、当該クライアント１０へ接続確認メッセージへの応答メッセージを送信する（ステップＳ２０３）。
クライアント１０は、接続確認メッセージを送信してから所定の応答判定時間（例えば５秒）以内にブローカ２０から当該応答メッセージを受信することにより、コネクションＡが正常に接続されていると判断する（ステップＳ２０４）。
【００４７】
一方、図９のパターン２は、クライアント１０が地下等の無線通信圏外に位置している場合の接続監視処理の流れを示す例である。
クライアント１０が無線通信圏外に進入した場合、クライアント１０の接続状態監視部１０５は、接続確認メッセージを送信する（ステップＳ２０１）が、無線通信圏外であるためブローカ２０へ当該接続確認メッセージが届かない。このため、応答判定時間以内にブローカ２０から応答メッセージが返されないので、クライアント１０の接続状態監視部１０５は、コネクションＡが切断されたと判断する（ステップＳ２０４）。
【００４８】
また、ブローカ２０のクライアント接続監視部２０４は、接続判定時間以内にコネクションＡを用いて接続確認メッセージを受信したか否かに基づいて、クライアント１０との接続状態を確認する（ステップＳ２０２）。パターン２の例では、ブローカ２０は、接続判定時間以内にクライアント１０から接続確認メッセージを受信できないため、クライアント１０のコネクションＡは正常に接続されていないと判断して、クライアント１０のコネクションＡを切断する（ステップＳ２０５）。
クライアント１０及びブローカ２０は、コネクションＡ及びコネクションＢのそれぞれについて、上述の接続監視処理を繰り返すことにより、コネクションＡ及びコネクションＢが正常に接続されているか否かを判断する。
【００４９】
（ブローカのメッセージ処理）
次に、図１０〜図１１を参照して、ブローカ２０のメッセージ処理について説明する。
図１０は、本発明の一実施形態に係るブローカのメッセージ処理を説明するための第１の処理フローである。
始めに、図１０を参照して、クライアント１０とブローカ２０とが正常に接続されている状態におけるメッセージ処理について説明する。
クライアント１０からメッセージが送信された場合は、以下のようにメッセージ処理が行われる。
クライアント１０のメッセージ送信部１０３は、発行リストＤ１２（図４）に基づいて、トピックと、当該トピックに設定された接続種別（コネクションＡ及びコネクションＢ）を指定して、ブローカ２０へメッセージを送信する（ステップＳ２１１）。例えば、クライアント１０のメッセージ送信部１０３は、課金情報トピックに関連付けられた「メッセージＡ１」を送信する場合、発行リストＤ１２に基づき、当該「メッセージＡ１」をコネクションＡを用いてブローカ２０へ送信する（ステップＳ２１１＿Ａ）。このとき、クライアント１０のメッセージ送信部１０３は、コネクションＡを用いて送信する「メッセージＡ１」を暗号化した上で、メッセージの送信を行う。
ブローカ２０のメッセージ配信部２０３は、クライアント１０から「メッセージＡ１」を受信すると、購読情報テーブルＤ２２（図６）に基づいて、当該「メッセージＡ１」の配信先を特定する（ステップＳ２１２）。
ブローカ２０のメッセージ配信部２０３は、当該「メッセージＡ１」において指定された課金情報トピックの購読を要求している配信先（例えばサーバ３０）を特定すると、当該配信先と正常に接続されているか否かを確認する（ステップＳ２１３）。
そして、ブローカ２０のメッセージ配信部２０３は、配信先と正常に接続されている場合は、当該配信先（サーバ３０）へ「メッセージＡ１」を配信する（ステップＳ２１４）。
【００５０】
また、クライアント１０のメッセージ送信部１０３は、クライアント１０の現在位置トピックに関連付けられた「メッセージＢ１」を送信する場合、発行リストＤ１２に基づき、当該「メッセージＢ１」をコネクションＢを用いてブローカ２０へ送信する（ステップＳ２１１＿Ｂ）。このとき、クライアント１０のメッセージ送信部１０３は、コネクションＢを用いて送信する「メッセージＢ１」は暗号化せずに、メッセージの送信を行う。
ブローカ２０のメッセージ配信部２０３は、クライアント１０から「メッセージＢ１」を受信すると、購読情報テーブルＤ２２に基づいて、当該「メッセージＢ１」の配信先を特定する（ステップＳ２１２）。
ブローカ２０のメッセージ配信部２０３は、当該「メッセージＢ１」において指定されたクライアント１０の現在位置トピックの購読を要求している配信先（例えばサーバ３０）を特定すると、当該配信先と正常に接続されていることを確認する（ステップＳ２１３）。
そして、ブローカ２０のメッセージ配信部２０３は、配信先と正常に接続されている場合は、当該配信先（サーバ３０）へ「メッセージＢ１」を配信する（ステップＳ２１４）。
【００５１】
また、サーバ３０からメッセージが送信された場合は、以下のようにメッセージ処理が行われる。
サーバ３０は、例えば、先に受信した「メッセージＡ１」に対する応答として、課金情報トピックに関連付けられた「メッセージＸ１」を送信する（ステップＳ２１５）。
ブローカ２０のメッセージ配信部２０３は、サーバ３０から「メッセージＸ１」を受信すると、購読情報テーブルＤ２２（図６）に基づいて、当該「メッセージＸ１」の配信先を特定する（ステップＳ２１２）。
ブローカ２０のメッセージ配信部２０３は、当該「メッセージＸ１」において指定されたクライアント課金情報トピックの購読を要求している配信先（例えばクライアント１０のコネクションＡ）を特定すると、当該配信先と正常に接続されていることを確認する（ステップＳ２１３）。
そして、ブローカ２０のメッセージ配信部２０３は、配信先と正常に接続されている場合は、当該配信先（クライアント１０のコネクションＡ）へ「メッセージＸ１」を配信する（ステップＳ２１４）。
【００５２】
なお、本実施形態ではブローカ２０とサーバ３０とは常時接続されているため、ブローカ２０のメッセージ配信部２０３は、配信先がサーバ３０である場合は接続状態を確認するステップＳ２１３を省略してもよい。
【００５３】
図１１は、本発明の一実施形態に係るブローカのメッセージ処理を説明するための第２の処理フローである。
次に、図１１を参照して、クライアント１０とブローカ２０との接続が切断されている状態におけるメッセージ処理について説明する。
例えば、クライアント１０が地下等の無線通信圏外に移動して、コネクションＡ及びコネクションＢが切断されているとする。このとき、サーバ３０が渋滞情報トピックに関連付けられた「メッセージＹ１」を送信すると（ステップＳ２１５）、ブローカ２０のメッセージ配信部２０３は、図１０のフローと同様に、当該「メッセージＹ１」の配信先の特定（ステップＳ２１２）と、当該配信先の接続状態の確認（ステップＳ２１３）とを行う。そして、ブローカ２０のメッセージ配信部２０３は、当該「メッセージＹ１」の配信先であるクライアント１０のコネクションＢが切断されている場合、当該「メッセージＹ１」を記憶媒体２１０に記憶して蓄積する（ステップＳ２１６）。
同様に、サーバ３０がサービスエリア（ＳＡ）情報トピックに関連付けられた「メッセージＺ１」を送信すると（ステップＳ２１５）、ブローカ２０のメッセージ配信部２０３は、同様の処理（ステップＳ２１２〜ステップＳ２１３）を行い、配信先（クライアント１０のコネクションＢ）が切断されている場合は、当該「メッセージＺ１」を記憶媒体２１０に記憶して蓄積する（ステップＳ２１６）。
【００５４】
クライアント１０が無線通信圏内に移動すると、クライアント１０の接続処理部１０１は、コネクションＡ及びコネクションＢの接続処理及び購読処理（図７のステップＳ１０２〜Ｓ１０３及びステップＳ１０５〜Ｓ１０６）を行う。なお、図１１では購読処理は図示を略している。
そして、コネクションＡ及びコネクションＢが確立すると、クライアント１０の認証処理部１０４は、認証処理（図７のステップＳ１０４）として、クライアント１０の認証情報トピックに関連付けられた「メッセージＡ２」を送信する（ステップＳ２１１）。
ブローカ２０のメッセージ配信部２０３は、図１０のフローと同様に、当該「メッセージＡ２」の配信先の特定（ステップＳ２１２）と、当該配信先の接続状態の確認（ステップＳ２１３）とを行い、当該配信先（サーバ３０）へ「メッセージＡ２」を配信する（ステップＳ２１４）。
「メッセージＡ２」に対する応答として、サーバ３０から認証情報トピックに関連付けられた「メッセージＸ２」が送信（ステップＳ２１５）されると、ブローカ２０のメッセージ配信部２０３は、上述と同様の処理を行って、「メッセージＸ２」をクライアント１０へコネクションＡを用いて配信する（ステップＳ２１２〜ステップＳ２１４）。
【００５５】
また、ブローカ２０のメッセージ配信部２０３は、クライアント１０のコネクションＡの認証情報トピックに関連付けられたメッセージ（「メッセージＸ２」）の配信と並行して、記憶媒体２１０に蓄積された通常メッセージの一括配信を行う。
具体的には、ブローカ２０のメッセージ配信部２０３は、クライアント１０のコネクションＢが確立すると、記憶媒体２１０に蓄積されたメッセージのうち、クライアント１０がコネクションＢを用いて購読を要求しているトピックに関連付けられたメッセージ（「メッセージＹ１」及び「メッセージＺ１」）を読み出して、これら蓄積メッセージの一括配信を行う（ステップＳ２１７）。
このようにすることで、クライアント１０は、ブローカ２０から蓄積された通常メッセージの一括配信が行われた場合であっても、コネクションＢを用いて一括配信された通常メッセージを購読するとともに、コネクションＡを用いて認証情報トピックに関連付けられたメッセージのような至急メッセージの送受信を並行して行うことができる。これにより、通常メッセージの一括配信により至急メッセージの送受信が遅延して、認証処理等の即時性が求められる処理が失敗することを抑制することができる。
【００５６】
（クライアント及びブローカのハードウェア構成）
次に、図１２を参照して、本実施形態のクライアント１０及びブローカ２０のハードウェア構成について説明する。
図１２は、本発明の一実施形態に係るクライアント及びブローカのハードウェア構成の例を示す図である。
【００５７】
コンピュータ９００は、ＣＰＵ９０１、主記憶装置９０２、補助記憶装置９０３、入出力インタフェース９０４、通信インタフェース９０５を備える。
上述のクライアント１０は、コンピュータ９００に実装される。また、同様に、上述のブローカ２０は、クライアント１０とは異なるコンピュータ９００に実装される。そして、上述したクライアント１０及びブローカ２０の各処理部の動作は、プログラムの形式でそれぞれのコンピュータ９００が有する補助記憶装置９０３に記憶されている。ＣＰＵ９０１は、プログラムを補助記憶装置９０３から読み出して主記憶装置９０２に展開し、当該プログラムに従って上記処理を実行する。また、クライアント１０のＣＰＵ９０１は、プログラムに従って、記憶媒体１１０に対応する記憶領域を主記憶装置９０２に確保し、ブローカ２０のＣＰＵ９０１は、プログラムに従って、記憶媒体２１０に対応する記憶領域を主記憶装置９０２に確保する。また、ＣＰＵ９０１は、プログラムに従って、処理中のデータを記憶する記憶領域を補助記憶装置９０３に確保する。なお、コンピュータ９００は、入出力インタフェース９０４を介して、外部記憶装置９１０と接続されており、クライアント１０の記憶媒体１１０またはブローカ２０の記憶媒体２１０に対応する記憶領域は外部記憶装置９１０に確保されてもよい。また、コンピュータ９００は、通信インタフェース９０５を介して、外部記憶装置９２０と接続されており、クライアント１０の記憶媒体１１０またはブローカ２０の記憶媒体２１０に対応する記憶領域は外部記憶装置９２０に確保されてもよい。
【００５８】
なお、少なくとも一つの実施形態において、補助記憶装置９０３は、一時的でない有形の媒体の一例である。一時的でない有形の媒体の他の例としては、入出力インタフェース９０４を介して接続される磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等が挙げられる。また、このプログラムが通信回線によってコンピュータ９００に配信される場合、配信を受けたコンピュータ９００が当該プログラムを主記憶装置９０２に展開し、上記処理を実行しても良い。
【００５９】
また、当該プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、当該プログラムは、前述した機能を補助記憶装置９０３に既に記憶されている他のプログラムとの組み合わせで実現するもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００６０】
また、ブローカ２０及びサーバ３０は、一台のコンピュータ９００で構成されていても良いし、通信可能に接続された複数のコンピュータで構成されていてもよい。
【００６１】
（作用効果）
以上のように、本実施形態に係るクライアント１０は、ブローカ２０との間で、至急メッセージを送受信するためのコネクションＡと、通常メッセージを送受信するためのコネクションＢとを確立する接続処理部１０１と、ブローカ２０から受信するメッセージのうち、コネクションＡを用いて受信する至急メッセージと、コネクションＢを用いて受信する通常メッセージとを、トピック別に指定する購読要求部１０２と、ブローカ２０へ送信するメッセージのうち、コネクションＡを用いて送信する至急メッセージと、コネクションＢを用いて送信する通常メッセージとを、トピック別に指定するメッセージ送信部１０３と、を備える。
このような構成を有することにより、ブローカ２０とクライアント１０との再接続後に、ブローカ２０が蓄積された通常メッセージの一括配信処理を行う場合であっても、クライアント１０は、コネクションＢを用いて一括配信された通常メッセージを購読するとともに、コネクションＡを用いて至急メッセージの送受信を並行して行うことができる。従って、クライアント１０は、一括配信された通常メッセージの受信処理により、至急メッセージの送受信が遅延することを抑制することができる。
【００６２】
また、上述のクライアント１０の接続処理部１０１は、コネクションＢの接続処理において、コネクションＢの接続情報に含まれる「メッセージ蓄積要否」を「要」に設定することにより、ブローカ２０に対して購読を要求している通常メッセージを、コネクションＢが切断されている間、ブローカ２０に蓄積することを要求する。
このような構成を有することにより、クライアント１０は、クライアント１０が地下等の無線通信圏外に進入したことによりブローカ２０とのコネクションＢが切断されている間、サーバ３０等から送信された通常メッセージをブローカ２０に蓄積させることができる。そして、クライアント１０は、無線通信の状態が安定する場所に移動してコネクションＢが再接続された後に、ブローカ２０から蓄積された通常メッセージの一括配信を受けることにより、通常メッセージの取りこぼしを抑制することが可能となる。
一方、接続処理部１０１は、コネクションＡの接続処理において、コネクションＡの接続情報に含まれる「メッセージ蓄積要否」を「不要」に設定することにより、ブローカ２０には至急メッセージが蓄積されない。このため、コネクションＡが再接続された後は、ブローカ２０は蓄積されたメッセージの一括配信が行わないため、クライアント１０は、コネクションＡでは、一括配信に妨げられることなく、至急メッセージの送受信を直ちに行うことができる。
【００６３】
また、上述のクライアント１０は、サーバ３０との間で認証を行う認証処理部１０４を更に備えている。認証処理部１０４は、ブローカ２０との間でコネクションＡが確立された後、コネクションＡを用いてサーバ３０との認証情報トピックに関連付けられたメッセージを送受信する。
このような構成を有することにより、クライアント１０は、ブローカ２０から一括配信された通常メッセージをコネクションＢを用いて受信中であっても、サーバとの認証処理に用いられる至急メッセージをコネクションＡを用いて送受信することができる。これにより、サーバ３０との認証処理に関する至急メッセージの送受信が遅延することがなく、要求された時間内に認証処理が完了しない等の処理の失敗を抑制することができる。
【００６４】
また、上述のブローカ２０は、クライアント１０及びサーバ３０とネットワークを介して接続可能とされ、クライアント１０及びサーバ３０間におけるトピック別に関連付けられているメッセージの送受信を仲介する。ブローカ２０は、クライアント１０との接続を行う際に用いられる接続情報として、至急メッセージを送受信するためのコネクションＡの接続情報（クライアントＩ及び接続種別）と、通常メッセージを送受信するためのコネクションＢの接続情報（クライアントＩ及び接続種別）とをクライアント１０別に記憶する接続情報記憶部２０１と、クライアント１０の要求に基づいて、至急トピック及びコネクションＡの接続情報を紐付けた購読情報と、通常トピック及びコネクションＢの接続情報を紐付けた購読情報と、を記憶する購読情報記憶部２０２と、購読情報に基づいて、コネクションＡが確立されている間、至急トピックに関連付けられた至急メッセージをコネクションＡを用いてクライアント１０へ配信し、コネクションＢが確立されている間、通常トピックに関連付けられた通常メッセージをコネクションＢを用いて配信し、コネクションＢが切断されている間、通常トピックに関連付けられた通常メッセージを蓄積するメッセージ配信部２０３と、を備える。
このような構成を有することにより、ブローカ２０は、クライアント１０とのコネクションＡ及びコネクションＢが切断されている間、至急メッセージは蓄積せず、通常メッセージを蓄積する。このため、ブローカ２９は、クライアント１０とコネクションＡ及びコネクションＢが再接続された後、至急メッセージの一括配信は行わず、通常メッセージの一括配信を行うことができる。この結果、ブローカ２９は、クライアント１０とコネクションＡ及びコネクションＢが再接続された後、コネクションＢを用いて蓄積された通常メッセージの一括配信を継続したまま、コネクションＡを用いて至急メッセージの配信を並行して行うことができる。従って、ブローカ２０は、蓄積された通常メッセージの一括配信処理により、認証処理、課金処理等に用いられる至急メッセージの送受信が遅延することを抑制することができる。
【００６５】
以上、本発明の実施形態について詳細に説明したが、本発明の技術的思想を逸脱しない限り、これらに限定されることはなく、多少の設計変更等も可能である。
例えば、上述の実施形態において、ブローカ２０とサーバ３０とは、一つの有線通信を接続する態様について説明したが、これに限られることはない。ブローカ２０とサーバ３０との間に、コネクションＡ及びコネクションＢの二つの有線通信の接続を行うようにしてもよい。この場合、サーバ３０においても、メッセージの内容に応じて、至急メッセージはコネクションＡを用いて送受信を行い、通常メッセージはコネクションＢを用いて送受信を行うようにしてもよい。このようにすることで、至急メッセージの送受信の遅延を更に抑制することができる。
【産業上の利用可能性】
【００６６】
上述のクライアント、ブローカ、通信システム、通信方法及びプログラムによれば、再接続時に実行される蓄積されたメッセージの一括配信処理によって、即時送信が必要とされるメッセージの送受信が遅延することを抑制することができる。
【符号の説明】
【００６７】
１  通信システム
１０、１０ａ、１０ｂ、１０ｃ  クライアント
１０１  接続処理部
１０２  購読要求部
１０３  メッセージ送信部
１０４  認証処理部
１０５  接続状態監視部
１１０  記憶媒体
２  情報センタ
２０  ブローカ
２００  ＭＱＴＴ機能部
２０１  接続情報記憶部
２０２  購読情報記憶部
２０３  メッセージ配信部
２０４  クライアント接続監視部
３０、３０ａ、３０ｂ  サーバ
【図１】
0006727329.tif 000002
【図２】
0006727329.tif 000003
【図３】
0006727329.tif 000004
【図４】
0006727329.tif 000005
【図５】
0006727329.tif 000006
【図６】
0006727329.tif 000007
【図７】
0006727329.tif 000008
【図８】
0006727329.tif 000009
【図９】
0006727329.tif 000010
【図１０】
0006727329.tif 000011
【図１１】
0006727329.tif 000012
【図１２】
0006727329.tif 000013