Sun Java System Messaging Server 6.3 管理ガイド

第 22 章 Message Queue のためのメッセージを生成する JMQ 通知プラグインの設定

この章では、Message Queue サービスでクライアントによって消費されるメッセージを生成する JMQ 通知プラグインを設定する方法について説明します。

この章の内容は次のとおりです。

22.1 JMQ 通知の概要

Messaging Server 通知プラグインを使用すると、通知メッセージをメッセージングサービスまたはイベントサービスに配信できます。メッセージングサービスはそれらの通知をコンシューマ (クライアントインタフェース) に送信し、そこでメッセージがフィルタリングされ、指定されたユーザーに配信されます。

たとえば、ユーザーのメールボックスに新しい電子メールが到着すると、通知プラグインはメッセージングサービスに通知メッセージを配信します。メッセージングサービスのコンポーネントであるメッセージコンシューマはその通知を受信し、ユーザーの電子メールクライアント (Communications Express や Mozilla メールなど) に送信します。電子メールクライアントはその後、ユーザーのコンピュータ画面上に「新しいメッセージを受信しました」というポップアップを表示することができます。

別の例として次のものがあります。ユーザーのメールボックスが制限容量を超えた場合、通知プラグインは、制限容量超過の通知メッセージを生成します。メッセージコンシューマは、ユーザーや、このイベントを通知する必要のある管理者に警告を送信します。

22.1.1 2 つの通知メッセージングサービス

次の 2 種類のメッセージングサービスに通知を配信するように Messaging Server を設定できます。

Message Queue サービスは Java Messaging Service (JMS) 仕様を実装しており、メッセージブローカ、メッセージを生成 (Produce) または取得 (Consume) するクライアントを作成するためのインタフェース、および管理のためのサービスや制御を提供します。Message Queue は、ルーティングや配信の機能、プロトコル、およびメッセージフォーマットを規定した JMS 標準に従っています。

イベント通知サービスは、Messaging Server および Sun Java System Calendar Server にバンドルされているコンポーネントです。これは、イベント通知の送受信にパブリッシュ/サブスクライブアーキテクチャーを使用する独自のサービスです。

Message Queue またはイベント通知サービス、あるいはこの両方のサービスに対して通知プロデューサを設定できます。


注 –

この章では、Message Queue のための通知を設定する方法についてのみ説明します。


イベント通知サービスについては、『Sun Java System Communications Suite Event Notification Service Guide』を参照してください。

22.1.2 通知プラグイン

Messaging Server が Message Queue またはイベント通知サービスへの通知を生成できるようにするには、そのサービス用のプラグインを設定してください。

iBiff プラグインを読み込む方法、およびイベント通知サービスを設定する方法については、『Sun Java System Messaging Server 管理ガイド』の付録 B「Messaging Server の Event Notification Service を管理する」を参照してください。

22.1.3 JMQ 通知を使用する利点

Message Queue での JMQ 通知プラグインの使用には、次の利点があります。

22.1.3.1 トピックまたはキューへの発行

トピックとキューは異なるメッセージング配信パターンを使用しており、Message Queue サービスでそれぞれのパターンを設定できます。

トピック: メッセージプロデューサがメッセージをトピックに送信する場合は、パブリッシュ/サブスクライブアーキテクチャーが使用されます。このブロードキャストパターンでは、プロデューサがメッセージをトピック送信先に送信します。このトピック送信先には、任意の数のコンシューマを登録 (サブスクライブ) できます。トピックに登録されている各コンシューマは、メッセージの独自のコピーを取得します。トピックにコンシューマが登録されていない場合は、メッセージが破棄されます。

また、イベント通知サービスもパブリッシュ/サブスクライブアーキテクチャーを使用しており、Message Queue で定義されているトピックパターンに似ています。

キュー: メッセージプロデューサがメッセージをキューに送信する場合は、ポイントツーポイントアーキテクチャーが使用されます。このパターンでは、プロデューサがメッセージをキュー送信先に送信し、1 コンシューマだけがその送信先からメッセージを受信できます。キューからのメッセージを複数のコンシューマが待っている場合、1 サブスクライバのみがそのメッセージを受信します。待っているコンシューマがいない場合、メッセージがタイムアウトするか、またはコンシューマがそのキューを受信するようになるまで、メッセージは保持されます。

キューにメッセージを生成すると、メッセージの負荷を複数のコンシューマにわたって分散させることができます。

22.1.3.2 複数の JMQ 通知プラグインの使用

1 〜 5 つの通知プラグインを設定できます。

Messaging Server は、次のデフォルトの場所でプラグインライブラリを提供しています。

/opt/SUNWmsgsr/lib/libjmqnotify

プラグインのパラメータを指定したり、実行可能コードのライブラリにプラグインをポイントしたりするには、configutil ユーティリティーを使用します。

複数のプラグインを指定した場合、各プラグインは、ほかのプラグインとは別に通知メッセージを生成します。たとえば、2 つのプラグインに削除メッセージパラメータが設定された状態で、ユーザーのメールボックスからメッセージが削除された場合は、両方のプラグインが通知メッセージを生成します。

複数のプラグインを設定することにより、目的に応じて別のメッセージ配布パターンを利用できます。たとえば、メッセージを生成する、次の 3 種類のプラグインを設定できます。

22.1.3.3 通知プラグインのパラメータの設定

設定するプラグインごとに、別の一連の configutil パラメータを定義してください。

これらのパラメータによって、次の 2 種類の情報が決定されます。

プラグインを設定する方法については、「JMQ 通知プラグインを設定する」を参照してください。

22.2 JMQ 通知サービスの設定

ここでは、JMQ 通知プラグインが、Message Queue サービス全体のコンテキストにどのように適合するかについて簡単に説明します。次に、JMQ 通知プラグインを設定するための詳細な手順を示します。

22.2.1 JMQ 通知サービスのための計画

JMQ 通知プラグインは、Message Queue サービスの一部にすぎません。メッセージングサービスにも、メッセージを取得するクライアントや、Message Queue インフラストラクチャー (ブローカ、管理コンポーネント、その他) が含まれています。

次の手順は、Messaging Server をサポートする Message Queue サービスを作成するために実行する必要のあるタスクの概要を示しています。

  1. 通知メッセージサービスを設計します。

    Messaging Server のインストールに必要な通知メッセージを定義します。メッセージサービス開発ライフサイクルの計画および設計フェーズは、この章の範囲外です。ただし、JMQ 通知プラグインを設定する前に、設計に関する次の質問に答えるようにしてください。

    • どのメッセージイベントで通知を生成する必要がありますか。使用可能な通知メッセージのリストについては、「22.3.1 通知メッセージ」を参照してください。

    • キューまたはトピック、あるいはその両方にメッセージを生成しますか。

    • Message Queue サービスだけでなく、独自のイベント通知サービスを使用しますか。

    これらの質問に対する答えは、1 つの通知プラグインまたは複数のプラグインのどちらを設定するかを決定したり、各プラグインの設定方法を決定したりする場合に役立ちます。

  2. Message Queue 製品をインストール、設定、および配備します。

    Message Queue のインストールの詳細は、『Sun Java System Message Queue Installation Guide』を参照してください。

    Message Queue の設定と配備の詳細は、『Sun Java System Message Queue 管理ガイド』を参照してください。

  3. JMQ 通知メッセージを取得する 1 つ以上の Message Queue クライアントを記述します。

    これらのクライアントは、Message Queue クライアント API の要件に準拠している必要があります。C で記述されたクライアントソースコードの簡単な例が次のパスに含まれています。


    /opt/SUNWmsgsr/examples/jmqsdk/

    ソースファイル名は jmqclient.c です。

    このクライアントソースコードは、libjmqnotify ライブラリ内のパラメータで定義された JMQ 通知メッセージからメッセージを受信します。次に、そのメッセージ出力を stdout に送信します。

    Message Queue クライアントを C または Java で記述する方法については、『Sun Java System Message Queue Developer's Guide for C Clients』または『Sun Java System Message Queue Developer's Guide for Java Clients』を参照してください。

  4. 通知メッセージを生成する JMQ 通知プラグインを設定し、有効にします。

    この章の残りの部分では、通知プラグインを設定する方法について説明します。

  5. 実行時 Message Queue クライアントを設定し、起動します。

    実行時 Message Queue クライアントの配備の詳細は、『Sun Java System Message Queue 管理ガイド』を参照してください。

ProcedureJMQ 通知プラグインを設定する

この手順では、まず、通知を生成するメッセージイベントを設定します。次に、Message Queue に必要な情報を指定します。最後に (手順 9 で)、プラグインライブラリの名前のあとにパラメータを指定することによって、プラグイン名を設定します。


'/opt/SUNWmsgsr/lib/libjmqnotify$plug-in_name'

プラグイン名を指定しない場合は、デフォルトで、jmqnotify が使用されます。

始める前に

次の製品をインストール、設定、および配備するようにしてください。


注 –

次の手順で設定する configutil パラメータのほとんどはオプションです。各デフォルト値のリストについては、表 22–2 を参照してください。


  1. 通知メッセージのパラメータを設定します。

    プラグインに含める通知メッセージの種類ごとに、configutil ユーティリティーで local.store.notifyplugin コマンドを使用します。

    たとえば、新しいメッセージの通知を有効にするには、次のコマンドを入力します。


    configutil -o local.store.notifyplugin.jmqnotify.NewMsg.enable -v 1

    ここで、jmqnotify はプラグインの名前であり、

    -v 1 はこのメッセージの通知を有効にします。値を 0 にすると、このメッセージの通知を無効にします。

    すべての JMQ 通知メッセージのリストについては、「22.3.1 通知メッセージ」を参照してください。

    JMQ 通知メッセージを有効にする configutil パラメータの定義については、『Sun Java System Messaging Server Administration Reference』の第 3 章「Messaging Server Configuration」を参照してください。

    いくつかの通知メッセージは、追加機能を含むメッセージを有効にするために、複数の configutil パラメータを使用します。たとえば、一部のメッセージは、通知テキストでメッセージヘッダーを伝えることができます。これらのメッセージを設定する方法については、「newflags および oldflags プロパティーの構文」を参照してください。


    注 –

    設定するプラグインごとに、別々にパラメータを設定する必要があります。

    そのため、jmq1jmq2 という名前の 2 つのプラグインを設定し、この両方のプラグインで新しいメッセージの通知を有効にする場合は、local.store.notifyplugin コマンドを次のように 2 回実行してください。


    configutil -o local.store.notifyplugin.jmq1.NewMsg.enable -v 1

    configutil -o local.store.notifyplugin.jmq2.NewMsg.enable -v 1

  2. Message Queue 送信先 (ブローカ) が動作しているホストを指定します。

    たとえば、次のコマンドを入力します。


    configutil -o local.store.notifyplugin.jmqnotify.jmqHost -v "127.0.0.1"

    ここで、jmqnotify はプラグインの名前であり、

    "127.0.0.1" は Message Queue ブローカのホストマシンの IP アドレスです。

  3. Message Queue ブローカのポートを指定します。

    たとえば、次のコマンドを入力します。


    configutil -o local.store.notifyplugin.jmqnotify.jmqPort -v "7676"

    ここで、jmqnotify はプラグインの名前であり、

    "7676" は Message Queue ブローカのポートです。

  4. サービスへのメッセージの生成を許可された Message Queue ユーザーのユーザー ID とパスワードを指定します。

    たとえば、次のコマンドを入力します。


    configutil -o local.store.notifyplugin.jmqnotify.jmqUser -v "guest"

    configutil -o local.store.notifyplugin.jmqnotify.jmqPwd -v "%$#a62t&"

    ここで、jmqnotify はプラグインの名前であり、

    "guest""%$#a62t&" はそれぞれ、Message Queue ユーザーのユーザー ID とパスワードです。

  5. 送信先の種類 (トピックまたはキュー) と、メッセージの送信先の名前を設定します。

    次の手順に従います。

    1. 送信先がトピックまたはキューのどちらであるかを指定します。

      たとえば、次のコマンドを入力します。


      configutil -o local.store.notifyplugin.jmqnotify.DestinationType -v "queue"

      ここで、jmqnotify はプラグインの名前であり、

      "queue" は送信先がキューであることを指定します。このパラメータに使用できる値は、"queue""topic" です。

    2. 送信先の名前を指定します。

      たとえば、次のいずれかのコマンドを入力します。


      configutil -o local.store.notifyplugin.jmqnotify.jmqQueue -v "JES-MS"

      または


      configutil -o local.store.notifyplugin.jmqnotify.jmqTopic -v "JES-MS"

      ここで、jmqnotify はプラグインの名前であり、

      jmqQueue または jmqTopic が送信先の種類を識別します。jmqQueue パラメータと jmqTopic パラメータは類語であり、相互に排他的です。1 つのプラグインでは、これらのパラメータの 1 つだけを使用できます。

      "JES-MS" は、メッセージの送信先のキューまたはトピックの名前の例です。

  6. メッセージの優先順位を指定します。

    たとえば、次のコマンドを入力します。


    configutil -o local.store.notifyplugin.jmqnotify.Priority -v 3

    ここで、jmqnotify はプラグインの名前であり、

    -v 3 はこのプラグインで生成されたメッセージに割り当てられる Message Queue の優先順位です。

    Priority のデフォルト値は 4 です。

  7. メッセージが Message Queue ブローカによって保持される時間 (ミリ秒単位) を指定します。

    たとえば、次のコマンドを入力します。


    configutil -o local.store.notifyplugin.jmqnotify.ttl -v 100

    ここで、jmqnotify はプラグインの名前であり、

    -v 100 は、メッセージが配信または破棄される前に Message Queue サービスによって 100 ミリ秒間保持されることを指定します。0 の値は、メッセージが永続的に保持され、タイムアウトしないことを示します。

  8. メッセージの持続性を指定します。

    たとえば、次のコマンドを入力します。


    configutil -o local.store.notifyplugin.jmqnotify.Persistent -v 1

    ここで、jmqnotify はプラグインの名前であり、

    -v 1 は Message Queue サービスで持続メッセージが使用されることを指定します。使用できる値は、1 (持続) と 0 (非持続) です。

  9. プラグイン名を設定します。

    デフォルト名を持つ 1 つのプラグインを設定するには、プラグインライブラリの完全修飾名か、またはライブラリの名前とそのプラグインパラメータのどちらかを入力できます。


    configutil -o local.store.notifyplugin -v /opt/SUNWmsgsr/lib/libjmqnotify

    または


    configutil -o local.store.notifyplugin -v '/opt/SUNWmsgsr/lib/libjmqnotify$jmqnotify'

    ここで、libjmqnotify はライブラリ名であり、

    jmqnotify はプラグインパラメータのデフォルト名です。

    ライブラリ名とパラメータを区切るには、ドル記号 ($) を使用します。

    値全体を単一引用符で囲みます ('value')。そうしないと、シェルによってドル記号が解釈されます。

    デフォルトのプラグインによって読み取られる configutil パラメータの名前は次のようになります。


    local.store.notifyplugin.jmqnotify.*

    jmq42 などの別のプラグイン名を設定するには、次のコマンドを入力します。


    configutil -o local.store.notifyplugin -v '/opt/SUNWmsgsr/lib/libjmqnotify$jmq42'

    jmq42 プラグインによって読み取られる configutil パラメータの名前は次のようになります。


    local.store.notifyplugin.jmq42.*

Procedure複数のプラグインを設定する

  1. 作成するプラグインごとに、別の一連の JMQ 通知パラメータを設定します。

    たとえば、jmq1jmq2 という名前の 2 つのプラグインを設定する場合を考えてみます。新しいメッセージの通知をこの両方のプラグインで有効にし、削除されたメッセージの通知は jmq2 プラグインでのみ有効にすることにします。この場合は、local.store.notifyplugin コマンドを次のように 3 回実行します。


    configutil -o local.store.notifyplugin.jmq1.NewMsg.enable -v 1

    configutil -o local.store.notifyplugin.jmq2.NewMsg.enable -v 1

    configutil -o local.store.notifyplugin.jmq2.PurgeMsg.enable -v 1

    また、これらのプラグインが Message Queue サービスと通信できるようにするためのパラメータも指定してください。

    すべての通知パラメータを設定するための詳細な手順については、「JMQ 通知プラグインを設定する」を参照してください。

  2. プラグイン名を設定します。

    jmq1jmq2 という名前の 2 つのプラグインを設定するには、次のコマンドを入力します。


    configutil -o local.store.notifyplugin 
    -v '/opt/SUNWmsgsr/lib/libjmqnotify$jmq1$$/opt/SUNWmsgsr/ \
    lib/libjmqnotify$jmq2'

    この例では、プラグインライブラリの 2 つのインスタンスが実行されます。

    ライブラリ名と、プラグイン名を指定するパラメータを区切るには、1 つのドル記号 ($) を使用します。

    最初のプラグインインスタンスと次のプラグインインスタンスを区切るには、2 つのドル記号 ($$) を使用します。

    値全体を単一引用符で囲みます ('value')。そうしないと、シェルによってドル記号が解釈されます。

    この例では、最初のインスタンスが、jmq1 という名前を持つパラメータから設定を構築します。


    local.store.notify.jmq1.*

    2 番目のインスタンスが、jmq2 という名前を持つパラメータから設定を構築します。


    local.store.notify.jmq2.*

22.2.2 複数の configutil パラメータを使用する通知メッセージの指定

ほとんどの通知メッセージでは、1 つの local.store.notifyplugin コマンドを実行することによってメッセージを指定します。

ただし、次の通知メッセージは、複数の local.store.notifyplugin コマンドで設定されるか、または設定できます。

  1. NewMsg

  2. UpdateMsg

  3. DeleteMsg

  4. MsgFlags

次の手順は、これらの通知メッセージを設定する方法を説明しています。

Procedure新しいメッセージや更新されたメッセージの通知にメッセージヘッダーとメッセージ本文を含めるように設定する

新しい電子メールメッセージや更新された電子メールメッセージがあった場合に送信される通知メッセージのテキストに、メッセージヘッダーとメッセージ本文を追加できます。

メッセージヘッダーとメッセージ本文の追加はオプションです。両方の機能またはどちらかの機能だけを含めるか、あるいはどちらも含めないようにすることができます。デフォルトでは、メッセージヘッダーもメッセージ本文も、送信されるメッセージに含まれません。

  1. 新しいメッセージまたは更新されたメッセージの通知を次のように指定します。


    configutil -o local.store.notifyplugin.jmqnotify.NewMsg.enable -v 1

    configutil -o local.store.notifyplugin.jmqnotify.UpdateMsg.enable -v 1

    ここで、jmqnotify はプラグインの名前であり、

    -v 1 はこれらのメッセージの通知を有効にします。値を 0 にすると、通知を無効にします。

  2. 次の例のように、0 より大きい値を持つ maxHeaderSize パラメータを指定します。


    configutil -o local.store.notifyplugin.jmqnotify.maxHeaderSize -v 1024

    ここで、jmqnotify はプラグインの名前であり、

    1024 は送信されるヘッダーの最大サイズです。maxHeaderSize のデフォルト値は 0 です。この場合、送信されるメッセージにヘッダー情報は含まれません。

  3. 次の例のように、0 より大きい値を持つ maxBodySize パラメータを指定します。


    configutil -o local.store.notifyplugin.jmqnotify.maxBodySize -v 1024

    ここで、jmqnotify はプラグインの名前であり、

    5120 は送信されるメッセージ本文の最大サイズです。maxBodySize のデフォルト値は 0 です。この場合、送信されるメッセージに本文は含まれません。

Procedure削除されたメッセージの通知にメッセージヘッダーを含めるように設定する

電子メールメッセージが削除されたときに送信される通知メッセージのテキストにメッセージヘッダーを追加できます。

メッセージヘッダーの追加はオプションです。デフォルトでは、メッセージヘッダーを含まない通知が送信されます。

  1. 電子メールメッセージが削除されたときに通知が送信されるようにします。


    configutil -o local.store.notifyplugin.jmqnotify.DeleteMsg.enable -v 1

    ここで、jmqnotify はプラグインの名前であり、

    -v 1 はこのメッセージの通知を有効にします。値を 0 にすると、通知を無効にします。

  2. ExpungeHeaders パラメータを指定します。


    configutil -o local.store.notifyplugin.jmqnotify.ExpungeHeaders -v 1

    ここで、jmqnotify はプラグインの名前であり、

    -v 1 は、削除されたメッセージの通知にメッセージヘッダーを含めるようにします。ExpungeHeaders のデフォルト値は 0 です。この場合、削除されたメッセージの通知にヘッダー情報は含まれません。

    DeleteMsg メッセージにメッセージヘッダーを含めるには、ExpungeHeaders パラメータを設定してください。

  3. 次の例のように、0 より大きい値を持つ maxHeaderSize パラメータを指定します。


    configutil -o local.store.notifyplugin.jmqnotify.maxHeaderSize -v 1024

    ここで、jmqnotify はプラグインの名前であり、

    1024 は送信されるヘッダーの最大サイズです。maxHeaderSize のデフォルト値は 0 です。この場合、送信されるメッセージにヘッダー情報は含まれません。

22.2.2.1 メッセージの状態が変更されたときの通知の設定

電子メールメッセージの状態が変更されたときに送信されるように通知メッセージを設定できます。

メッセージフラグ通知で配信される情報

電子メールメッセージへの次の操作によって状態フラグが変更された場合は常に、メッセージフラグ通知が生成されます。

メッセージフラグ通知が送信される場合、その通知には次のプロパティーが含まれます。

これらの情報は、5 文字の文字列である、oldflagsnewflags の 2 つのプロパティーで伝えられます。

これらの 2 つのプロパティーの値の説明については、「newflags および oldflags プロパティーの構文」を参照してください。

メッセージフラグ通知に必要な configutil パラメータ

メッセージフラグ通知を有効にするには、次の configutil パラメータを設定してください。

最初の MsgFlags パラメータは、状態フラグの値の変更を通知メッセージで配信できるように、IMAP サーバーおよびメッセージストアがこの情報を識別して追跡できるようにします。

このパラメータは、すべての通知プラグインに適用されます。そのため、どの通知プラグインがメッセージフラグ通知を使用する場合でも、このパラメータを有効にしてください。メッセージフラグ通知を使用するプラグインがない場合は、このパラメータを無効 (デフォルト値) にする必要があります。

2 番目のパラメータ *.MsgFlags.enable は、特定のプラグインライブラリでメッセージフラグ通知が送信されるようにします。


注 –

メッセージフラグの通知を有効にするには、両方のパラメータを設定してください。


Procedureメッセージ状態フラグが変更されたときの通知を有効にする

  1. 状態フラグの追跡を可能にし、メッセージフラグ通知に状態情報が含まれるようにします。


    configutil -o local.store.notifyplugin.MsgFlags -v 1

    ここで、-v 1 は、メッセージフラグ通知でメッセージフラグ情報が送信されるようにします。値を 0 にすると、この通知を無効にします。

  2. 特定のプラグインでメッセージフラグ通知が送信されるようにします。


    configutil -o local.store.notifyplugin.jmqnotify.MsgFlags.enable -v 1

    ここで、jmqnotify はプラグインの名前であり、

    -v 1 はこのプラグインのメッセージフラグ通知を有効にします。値を 0 にすると、通知を無効にします。

22.3 JMQ 通知メッセージとプロパティー

この節で説明する内容は、次のとおりです。

22.3.1 通知メッセージ

メッセージストア内で発生するさまざまな種類のイベントに対して通知メッセージを生成できます。たとえば、ユーザーがログインしたら、Login メッセージを生成して Message Queue ブローカに配信できます。

configutil パラメータは、生成する各メッセージの種類を指定します。各種の configutil パラメータを設定することによって、どのイベントでメッセージを生成するかを決定します。configutil パラメータは、1 つ以上の JMQ 通知プラグインライブラリによって参照されます。

送信先の種類が "topic" または "queue" のどちらに設定されているかに応じて、すべてのメッセージがトピックまたはキューに配信されます。Message Queue 送信先を設定する方法については、「JMQ 通知プラグインを設定する」を参照してください。

各メッセージは、次のメッセージヘッダーで識別されます。

MQ_MESSAGE_TYPE_HEADER_PROPERTY

JMQ 通知プラグインは、次の表に示すメッセージをサポートしています。

これらのメッセージを有効にする configutil パラメータのリストについては、「22.3.4 configutil パラメータのデフォルト値」を参照してください。

表 22–1 JMQ 通知メッセージ

通知メッセージ 

説明 

DeleteMsg

「削除済み」としてマークされたメッセージがメールボックスから削除されました。これは IMAP の破棄と同等です。 

Login

ユーザーが IMAP、HTTP、または POP からログインしました。このメッセージは、configutil のパラメータ local.store.notifyplugin.*.LogUser.enable で有効になります。

Logout

ユーザーが IMAP、HTTP、または POP からログアウトしました。このメッセージは、configutil のパラメータ local.store.notifyplugin.*.LogUser.enable で有効になります。

MsgFlags

メッセージ上のメッセージフラグが変更されました。古いフラグと新しいフラグがこのメッセージに含まれます。 

NewMsg

新しいメッセージがユーザーのメールボックスに受信されました。メッセージヘッダーや本文が含まれている可能性があります。 

OverQuota

ユーザーのメールボックスがいずれかの制限容量 (diskquota、msgquota) を超えたために操作が失敗しました。制限容量が変更されるか、またはユーザーのメールボックスが制限容量未満になるまで、MTA チャネルはメッセージを保持します。MTA に保持されている間にメッセージの期限が切れると、そのメッセージは破棄されます。 

PurgeMsg

メッセージが期限切れになったために、サーバープロセス imexpire によってメールボックスから破棄されました。DeleteMsg がクライアント側の破棄であるのに対して、これはサーバー側の破棄です。これは本来の意味の削除ではありません。 

ReadMsg

メールボックス内のメッセージが読み取られました。IMAP プロトコルでは、メッセージが「開封済み」としてマークされました。 

TrashMsg

IMAP または HTTP によってメッセージに削除のマークが付けられました。メールクライアントの設定によっては、フォルダ内のメッセージが引き続きユーザーに表示される可能性があります。これらのメッセージは、破棄が実行された時点でフォルダから削除されます。 

UnderQuota

制限容量が OverQuota 状態から正常に戻りました。 

UpdateMsg

IMAP 操作によってメッセージがメールボックスに追加されました。たとえば、ユーザーが電子メールメッセージをメールボックスにコピーしました。メッセージヘッダーや本文が含まれている可能性があります。 

22.3.2 通知メッセージのための規則とガイドライン

サポートされている通知メッセージには、次の規則とガイドラインが適用されます。

22.3.3 特定のメッセージタイプに対する通知

通知は、テキストメッセージ、ボイスメール、イメージデータなどの、異なるタイプのメッセージに関する状態情報を配信できます。ユーザーはたいてい、これらの異なるメッセージタイプのメッセージが同じメールフォルダに格納されることを期待しています。たとえば、新しいテキストメッセージとボイスメールがユーザーの携帯電話の受信箱に到着することを希望する場合があります。

これらのメッセージタイプを設定するには、store.messagetype.enable などの configutil コマンドを使用します。メッセージタイプの設定と管理については、第 20 章「メッセージストアを管理する」にある「メッセージタイプの管理」を参照してください。

メッセージタイプが設定されていれば、JMQ 通知メッセージで特定のメッセージタイプを識別できます。通知メッセージをメッセージタイプごとに解釈し、各タイプに関する状態情報をメールクライアントに配信するように Message Queue クライアントを記述できます。

たとえば、異なるタイプの新しいメッセージがユーザーのメールボックスに到着したとします。たとえば、ユーザーの受信箱に 7 つの新しいボイスメールメッセージと 4 つの新しいテキストメッセージが存在することをユーザーに通知するデータを、NewMsg 通知メッセージに含めることができます。

次の通知メッセージに、特定のメッセージタイプを追跡するための情報を含めることができます。


NewMsg
UpdateMsg
ReadMsg
TrashMsg
DeleteMsg
PurgeMsg
OverQuota
UnderQuota

JMQ 通知機能は、現在メールボックス内にあるメッセージの数をメッセージタイプごとにカウントします。1 つのカウントを送信するのではなく、メッセージタイプごとのカウントを指定する配列が通知メッセージとともに送信されます。

メッセージ固有のカウントは numMsgs プロパティーに含まれ、通知メッセージで配信されます。ReadMsg および TrashMsg 通知メッセージでは、開封されたメッセージの数 (numSeen) と削除済みとしてマークされた数 (numDeleted) もメッセージタイプごとにカウントされます。


注 –

イベント通知サービスは、メッセージタイプをサポートしていません。メッセージタイプに関する情報を配信するには、JMQ 通知プラグインを使用してください。


22.3.4 configutil パラメータのデフォルト値

通知メッセージや、Message Queue に必要な設定情報は、configutil パラメータで設定されます。

これらのパラメータとそのデフォルト値を表 22–2 に示します。

configutil パラメータの完全な定義については、『Sun Java System Messaging Server Administration Reference』の第 3 章「Messaging Server Configuration」を参照してください。

表 22–2 configutil パラメータとそのデフォルト値

configutil パラメータ

デフォルト値 

local.store.notifyplugin.*.maxBodySize

0 — 無効 

local.store.notifyplugin.*.maxHeaderSize

0 — 無効 

local.store.notifyplugin.*.NewMsg.enable

1 — 有効 

local.store.notifyplugin.*.UpdateMsg.enable

1 — 有効 

local.store.notifyplugin.*.ReadMsg.enable

1 — 有効 

local.store.notifyplugin.*.DeleteMsg.enable

1 — 有効 

local.store.notifyplugin.*.PurgeMsg.enable

1 — 有効 

local.store.notifyplugin.*.LogUser.enable

1 — 有効 

local.store.notifyplugin.*.MsgFlags.enable

0 — 無効 

local.store.notifyplugin.*.noneInBox.enable

0 — 無効 

local.store.notifyplugin.*.jmqHost

"127.0.0.1" 

local.store.notifyplugin.*.jmqPort

7676 

local.store.notifyplugin.*.jmqTopic

"JES-MS" 

local.store.notifyplugin.*.jmqQueue

"JES-MS" 

local.store.notifyplugin.*.jmqUser

"guest" 

local.store.notifyplugin.*.jmqPwd

"guest" 

local.store.notifyplugin.*.destinationtype

"topic" 

local.store.notifyplugin.*.Priority

local.store.notifyplugin.*.ttl

0 — メッセージがタイムアウトしないことを示します。 

local.store.notifyplugin.*.Persistent

1 — 有効 

22.3.5 通知メッセージのプロパティー

すべてのメッセージには、プロパティーで定義された追加情報が含まれます。メッセージごとに異なるプロパティーが存在します。たとえば、NewMsg は、新しいメッセージの IMAP uid を示します。

22.3.5.1 標準の通知メッセージプロパティー

表 22–3 は、標準の通知メッセージプロパティーを示しています。これらのプロパティーは、すべての JMS メッセージに存在します。

表 22–3 標準の通知メッセージプロパティー

プロパティー 

データ型 

説明 

hostname

ConstMQString 

メッセージを生成したマシンのホスト名。 

pid

MQInt32 

メッセージを生成したプロセスの ID。 

process

ConstMQString 

メッセージを生成したプロセスの名前を指定します。 

timestamp

MQFloat64 

エポック (1970 年 1 月 1 日 0:00:00 GMT) 以降のミリ秒数を指定します。 

22.3.5.2 特定の通知メッセージに固有のプロパティー

表 22–4 は、特定の通知メッセージに含まれるプロパティーを示しています。

各メッセージには、次の表に示すプロパティーのサブセットが含まれます。各メッセージに関連付けられたプロパティーのリストについては、表 22–5 を参照してください。

表 22–4 特定の通知メッセージに固有のプロパティー

プロパティー 

データ型 

説明 

client

ConstMQString 

メッセージに関連付けられた Message Queue クライアントの IP アドレス。 

diskquota

MQInt32 

メッセージに関連付けられたユーザーのディスク制限容量 (K バイト単位)。この値が -1 に設定されている場合は、制限容量がないことを示します。 

diskquotaused

MQInt32 

メッセージに関連付けられたユーザーによって使用されたディスク容量 (K バイト単位)。 

hdrLen

MQInt32 

メッセージヘッダーのサイズ。切り捨てられた可能性があるため、メッセージ本文にあるヘッダーのサイズとは異なる場合があることに注意してください。 

imapUid

MQInt32 

メッセージに関連付けられた IMAP uid プロパティー。 

lastUid

MQInt32 

メールボックスで使用された最後の IMAP uid 値。 

mailboxName

ConstMQstring 

イベントに関連付けられたメッセージストアのメールボックス名。mailboxName の形式は次のいずれかです (uid はユーザーの一意の識別子)。

uid — デフォルト (第一) ドメイン内のユーザーの受信箱を識別します。

uid@domain — ホストドメイン内のユーザーの受信箱を識別します。

uid/mailboxname — デフォルトドメイン内のユーザーのトップレベルのメールボックスを識別します。

uid@domain/mailboxname — ホストドメイン内のユーザーのトップレベルのメールボックスを識別します。

uid/foldername/mailboxname — デフォルトドメインにあるユーザーのフォルダ内のメールボックスを識別します。

uid@domain/foldername/mailboxname — ホストドメインにあるユーザーのフォルダ内のメールボックスを識別します。

msgquota

MQInt32 

メッセージの最大数に対するユーザーの制限容量。この値が -1 に設定されている場合は、制限容量がないことを示します。 

newflags

ConstMQString 

現在の操作によって変更されたあとに、ユーザーのメールボックスのメッセージに対して設定されたフラグ。このプロパティーは、MsgFlags 通知メッセージが生成された場合は常に、oldflags とともに存在します。

newflags の構文と値については、この表の次にある「newflags および oldflags プロパティーの構文」を参照してください。

numDeleted

MQInt32 

削除済みとしてマークされたメールボックス内のメッセージの数。 

メールボックス所有者によって削除されたメッセージをカウントします。ほかのユーザーがこのメールボックスにアクセスした場合、そのユーザーがメールボックス内で操作しても、カウントには含まれません。ただし、ほかのユーザーの操作によって、DeleteMsg などの通知がトリガーされる場合があります。

numDeletednn

MQInt32 

メッセージタイプごとに指定された、削除済みとしてマークされたメールボックス内のメッセージの総数。メッセージタイプが設定されている場合は、 

numDeletednn プロパティーに、メッセージタイプ nn ごとのカウントが含まれます。

numDeleted プロパティーは常に送信され、削除済みとしてマークされたすべてのメッセージの総数 (すべてのタイプを含む) をカウントします。

たとえば、20 件のメッセージが削除済みとしてマークされており、そのうちの 10 件がタイプ 3、7 件がタイプ 16、残りが認識されているタイプでない場合、この通知には次のプロパティーとカウントが含まれます。 

numDeleted=20

numDeleted3=10

numDeleted16=7

numMsgs

MQInt32 

現在メールボックス内にあるメッセージの総数。 

numMsgsnn

MQInt32 

メッセージタイプごとに指定された、現在メールボックス内にあるメッセージの総数。メッセージタイプが設定されている場合は、 

numMsgsnn プロパティーには、メッセージタイプ nn ごとのカウントが含まれます。

numMsgs プロパティーは常に送信され、メールボックス内のすべてのメッセージの総数 (すべてのタイプを含む) をカウントします。

たとえば、現在メールボックス内に 20 件のメッセージがあり、そのうちの 10 件がタイプ 3、7 件がタイプ 16、残りが認識されているタイプでない場合、この通知には次のプロパティーとカウントが含まれます。 

numMsgs=20

numMsgs3=10

numMsgs16=7

numSeen

MQInt32 

開封済み (読み取り済み) としてマークされたメールボックス内のメッセージの数。 

この数は、メールボックス所有者によって読み取られたメッセージをカウントします。ほかのユーザーがこのメールボックスにアクセスした場合、そのユーザーがメールボックス内で操作しても、カウントには含まれません。ただし、ほかのユーザーの操作によって、ReadMsg などの通知がトリガーされる場合があります。

numSeennn

MQInt32 

メッセージタイプごとに指定された、開封済み (読み取り済み) としてマークされたメールボックス内のメッセージの総数。メッセージタイプが設定されている場合は、numSeennn プロパティーに、メッセージタイプ nn ごとのカウントが含まれます。

numSeen プロパティーは常に送信され、開封済みとしてマークされたすべてのメッセージの総数 (すべてのタイプを含む) をカウントします。

たとえば、20 件のメッセージが開封済みとしてマークされており、そのうちの 10 件がタイプ 3、7 件がタイプ 16、残りが認識されているタイプでない場合、この通知には次のプロパティーとカウントが含まれます。 

numSeen=20

numSeen3=10

numSeen16=7

numSeenDeleted

MQInt32 

開封済み (読み取り済み) としてマークされ、かつ削除済みとしてマークされたメールボックス内のメッセージの数。 

この数は、メールボックス所有者によって読み取られ、削除されたことがマークされているメッセージをカウントします。ほかのユーザーがこのメールボックスにアクセスした場合、そのユーザーがメールボックス内で操作しても、カウントには含まれません。ただし、ほかのユーザーの操作によって、ReadMsgDeleteMsg などの通知がトリガーされる場合があります。

numSeenDeletednn

MQInt32 

メッセージタイプごとに指定された、開封済み (読み取り済み) および削除済みとしてマークされたメールボックス内のメッセージの総数。メッセージタイプが設定されている場合は、numSeenDeletednn プロパティーが、メッセージタイプ nn ごとのカウントを伝えます。

numSeenDeleted プロパティーは常に送信され、開封済みおよび削除済みとしてマークされたすべてのメッセージの総数 (すべてのタイプを含む) をカウントします。

たとえば、20 件のメッセージが開封済みおよび削除済みとしてマークされており、そのうちの 10 件がタイプ 3、7 件がタイプ 16、残りが認識されているタイプでない場合、この通知には次のプロパティーとカウントが含まれます。 

numSeenDeleted=20

numSeenDeleted3=10

numSeenDeleted16=7

oldflags

ConstMQString 

現在の操作によって変更される前に、ユーザーのメールボックスのメッセージに対して設定されたフラグ。このプロパティーは、MsgFlags 通知メッセージが生成された場合は常に、newflags とともに存在します。

oldflags の構文と値については、この表の次にある「newflags および oldflags プロパティーの構文」を参照してください。

quotaRoot

ConstMQString 

この値は、ユーザー名、フォルダ名、またはメッセージタイプのいずれかです。 

size

MQInt32 

メッセージのサイズ。本文は一般に、メッセージの切り捨てられたバージョンであるため、メッセージ本文のサイズとは異なる場合があることに注意してください。 

uidValidity

MQInt32 

IMAP uid の有効性のプロパティー。 

userid

ConstMQString 

メッセージに関連付けられたユーザー ID。 


注 –

サブスクライバは、メッセージ参照を解析する場合、ドキュメント化されていないプロパティーを許可するようにしてください。これにより、新しいプロパティーが追加された場合でも将来の互換性が確保されます。


newflags および oldflags プロパティーの構文

newflags および oldflags プロパティーは 5 文字の文字列です。文字列は次の値を持つ必要があります。

22.3.5.3 各通知メッセージに含まれるプロパティー

表 22–5 は、各通知メッセージに関連付けられたプロパティーを示しています。

たとえば、TrashMsg メッセージにどのプロパティーが適用されるかを調べるには、「ReadMsg、TrashMsg」の列タイトルを参照します。TrashMsg メッセージは、標準のプロパティーに加えて、mailboxNamenumMsgsuidValiditynumSeen、および numDeleted を使用できます。

表 22–5 各通知メッセージで伝えられるプロパティー

プロパティー 

NewMsg、UpdateMsg 

ReadMsg、TrashMsg 

DeleteMsg、PurgeMsg 

MsgFlags 

 

Login、Logout 

OverQuota、UnderQuota 

client

なし 

なし 

なし 

なし 

あり 

なし 

diskquota

なし 

なし 

なし 

なし 

なし 

あり 

diskquotaused

なし 

なし 

なし 

なし 

なし 

あり 

hdrLen

あり 

なし 

なし 

あり 

なし 

なし 

hostname

あり 

あり 

あり 

あり 

あり 

あり 

imapUid

あり 

なし 

あり 

あり 

なし 

なし 

lastUid

なし 

なし 

あり 

なし 

なし 

なし 

mailboxName

あり 

あり 

あり 

あり 

なし 

なし 

msgquota

なし 

なし 

なし 

なし 

なし 

あり 

newflags

なし 

なし 

なし 

あり 

なし 

なし 

numDeleted

あり 

あり 

あり 

なし 

なし 

なし 

numDeletedn

あり * 

あり * 

あり * 

なし 

なし 

なし 

numMsgs

あり 

あり 

あり 

なし 

なし 

あり 

numMsgsn

あり * 

あり * 

あり * 

なし 

なし 

なし 

numSeen

あり 

あり 

あり 

なし 

なし 

なし 

numSeenn

あり * 

あり * 

あり * 

なし 

なし 

なし 

numSeenDeleted

あり 

あり 

あり 

なし 

なし 

なし 

numSeenDeletedn

あり * 

あり * 

あり * 

なし 

なし 

なし 

oldflags

なし 

なし 

なし 

あり 

なし 

なし 

Owner

なし 

あり 

なし 

なし 

なし 

なし 

pid

あり 

あり 

あり 

あり 

あり 

あり 

process

あり 

あり 

あり 

あり 

あり 

あり 

quotaRoot

なし 

なし 

なし 

なし 

なし 

あり 

size

あり 

なし 

なし 

なし 

なし 

なし 

timestamp

あり 

あり 

あり 

あり 

あり 

あり 

uidValidity

あり 

あり 

あり 

あり 

なし 

なし 

userid

なし 

あり 

なし 

なし 

あり 

あり 


注 –

* numDeletednnumMsgsnnumSeenn、および numSeenDeletedn プロパティーが通知に含まれるのは、メッセージストアでメッセージタイプが定義されている場合だけです。