Skip to main content

エンタープライズ・メッセージ・バンクの定義

このページでは、オプションで用意されているエンタープライズ・メッセージ・バンクと呼ばれる特殊なプロダクションの定義方法について説明します。

エンタープライズ・メッセージ・バンクの定義を完了した後、"エンタープライズ・メッセージ・バンクとそのクライアントの構成" を参照してください。

エンタープライズ・メッセージ・バンクの概要

エンタープライズ・メッセージ・バンクはオプションのリモート・アーカイブ機能であり、複数クライアント・プロダクションからメッセージ、イベント・ログの項目、および検索テーブルのエントリを収集することができます。これは、以下のコンポーネントから構成されます。

  • メッセージ・バンク・サーバ。任意の数のクライアント・プロダクションからの送信を受信するメッセージ・バンク・サービスだけで成る単純なプロダクションです。

  • プロダクションに追加して、メッセージ・バンク・サーバのアドレスで構成する、クライアント・オペレーション (メッセージ・バンク・オペレーション)。

概念的な例を以下に示します。

3 つの異なるプロダクションのメッセージ・バンク・オペレーションからの入力を受信するメッセージ・バンク・プロダクションの図

メッセージ・バンクでメッセージを簡単に表示できるように、InterSystems IRIS® データ・プラットフォームには以下の追加オプションが用意されています。

  • メッセージ・バンク・インスタンスの場合は、管理ポータルに [エンタープライズモニタ] ページが自動的に追加されます。このページでは、クライアント・プロダクションのステータスを監視したり、メッセージ・バンクを参照したり、監視対象クライアントからメッセージの検索を実行したりできます。

  • メッセージを送信し、エンタープライズ・モニタへの便利なリンクが含まれるように、各クライアント・プロダクションを構成します。

以下に例を示します。

3 つの異なるサーバからの入力を受信するエンタープライズ・モニタの図

メッセージ・バンク・サーバの定義

メッセージ・バンク・サーバを定義するには、相互運用対応ネームスペースにあるサーバ・マシンで以下を実行します。

  1. Ens.Enterprise.MsgBank.ProductionOpens in a new tab 抽象クラスのサブクラスを作成します。

  2. ProductionDefinition XData ブロックをクラスにコピーします。

  3. 新しいクラスをコンパイルします。

以下に例を示します。

Class MyMessageBank Extends Ens.Enterprise.MsgBank.Production
{

XData ProductionDefinition
{
<Production Name="Ens.Enterprise.MsgBank.Production" TestingEnabled="false" LogGeneralTraceEvents="false">
  <Description>Production for receiving and collating message bank submissions from one or more client
   interoperability-enabled namespaces and for maintaining a local repository of production status 
   information about each client namespace, for display on the Enterprise Monitor page. Open the Monitor 
   page on the same machine that is hosting this Production.</Description>
  <ActorPoolSize>0</ActorPoolSize>
  <Setting Target="Production" Name="ShutdownTimeout">120</Setting>
  <Setting Target="Production" Name="UpdateTimeout">10</Setting>
  <Item Name="MonitorService" Category="" ClassName="Ens.Enterprise.MonitorService" PoolSize="1"
        Enabled="true" Foreground="false" InactivityTimeout="0" Comment="Populates global
        ^IRIS.Temp.Ens.EntMonitorStatus by polling namespaces from Systems List every CallInterval seconds"
        LogTraceEvents="false" Schedule="">
    <Setting Target="Host" Name="AlertGracePeriod">0</Setting>
    <Setting Target="Host" Name="AlertOnError">0</Setting>
    <Setting Target="Host" Name="ArchiveIO">0</Setting>
    <Setting Target="Adapter" Name="CallInterval">10</Setting>
  </Item>
  <Item Name="MsgBankService" Category="" ClassName="Ens.Enterprise.MsgBank.TCPService" PoolSize="100"
        Enabled="true" Foreground="false" InactivityTimeout="20" Comment="" LogTraceEvents="true" Schedule="">
    <Setting Target="Host" Name="AlertGracePeriod">0</Setting>
    <Setting Target="Host" Name="AlertOnError">0</Setting>
    <Setting Target="Host" Name="ArchiveIO">0</Setting>
    <Setting Target="Adapter" Name="Endian">Big</Setting>
    <Setting Target="Adapter" Name="UseFileStream">0</Setting>
    <Setting Target="Adapter" Name="JobPerConnection">1</Setting>
    <Setting Target="Adapter" Name="AllowedIPAddresses"></Setting>
    <Setting Target="Adapter" Name="QSize">100</Setting>
    <Setting Target="Adapter" Name="CallInterval">5</Setting>
    <Setting Target="Adapter" Name="Port">9192</Setting>
    <Setting Target="Adapter" Name="StayConnected">-1</Setting>
    <Setting Target="Adapter" Name="ReadTimeout">10</Setting>
    <Setting Target="Adapter" Name="SSLConfig"></Setting>
  </Item>
</Production>
}

}

このプロダクションには以下のサービスが含まれます。

このプロダクションは、このデータを受信して、ローカル・リポジトリを維持します。

テスト目的では、メッセージ・バンク・プロダクションを正規のプロダクションと同じマシンとインスタンス上に配置できますが、監視する予定のプロダクションとは別のネームスペースに入れる必要があります。

メッセージ・バンク・ヘルパ・クラスの追加

デフォルトでは、メッセージ本文をインデックス付けしていないため、検索できません。ヘルパ・クラスを追加すると、メッセージ・バンク内の検索機能を実装できます。そのためには、以下のように操作します。

  1. Ens.Enterprise.MsgBank.BankHelperClassOpens in a new tab のサブクラスを作成し、OnBankMsg() メソッドを実装します。このメソッドの詳細は、クラス・リファレンスを参照してください。

    OnBankMsg() メソッドは、カスタム処理を特定し、受信メッセージにメッセージ本文が含まれるときに実行されます。

    このメソッドの実装では、実行中にメッセージを処理し、必要に応じて入力容量を削減) するかどうか、または、メソッドが非同期でメッセージを二次プロセスに転送してより効率的に処理を分散するべきかどうかを判断しなければなりません。

  2. メッセージ・バンクのプロダクションでは、Ens.Enterprise.MsgBank.TCPServiceOpens in a new tab ビジネス・サービスを選択し、[Bankヘルパークラス] の設定を指定します。値には、ヘルパ・クラスの名前を使用します。

メッセージ・バンクに関する注意事項

メッセージ・バンクの以下の重要な特性に注意してください。

  • メッセージ・バンクは、寄与しているプロダクションとのメッセージ・ボディ・クラスに関する同期依存性を持たないため、シリアル化された形式の各メッセージを受信します。仮想ドキュメント・メッセージ・ボディの場合も、メッセージ・バンクはシリアル化されたドキュメントをオブジェクトにリパースし、寄与しているプロダクションから検索テーブル・エントリを受信して格納します。

    メッセージ・バンク内をカスタム・スキーマのプロパティで検索できるようにするには、必ず、そのカスタム・スキーマ定義をメッセージ・バンク・プロダクションのネームスペースに格納することを確認してください。

  • 一意性を確保するために、メッセージ・バンク・プロダクションは、クライアント・プロダクションの数値識別子をメッセージ ID の先頭に付加します。

  • メッセージ・バンク・ページは、複数のクライアント・プロダクションの状態を表示したり、それらのクライアント・プロダクションに再送信サービスを起動するためのポータルとしても機能します。これらの追加機能が利用可能になるには、メッセージ・バンクがクライアント・プロダクションの Web アドレスを把握する必要があります。詳細は、"エンタープライズ・メッセージ・バンクの構成" を参照してください。

  • メッセージ・バンクのメカニズムでは、送信元プロダクションからのメッセージは削除されません。その機能は別の削除プロセスによって処理する必要があります。

  • メッセージをメッセージ・バンクから送信元プロダクションまたは別のクライアント・プロダクションに再送信することも可能です。"エンタープライズ・メッセージ・バンクの使用法" を参照してください。

FeedbackOpens in a new tab