QoSプロパティは、メッセージ単位およびイベントチャネル単位に、より詳細な属性情報を設定するためのプロパティです。両方に設定された場合は、メッセージ単位に設定された値が有効になります。
メッセージ単位に設定する場合は、StructuredEvent型データの作成時に設定します。データの作成例は、“4.4 QoS機能運用時のアプリケーション開発”を参照してください。イベントチャネル単位に設定する場合は、QoSAdminインタフェースで設定します。
QoSAdminインタフェースの詳細については、“リファレンスマニュアル(API編)”の“ノーティフィケーションサービスインタフェース”を参照してください。
指定可能なQoSプロパティ項目、その設定値のデータ型、および設定単位について、以下に示します。
QoSプロパティ項目 | 設定値のデータ型 | 設定可能なデータ単位 | |
---|---|---|---|
メッセージ | チャネル(動的生成/静的生成) | ||
Priority | CORBA short型 | ○ | ○ |
Timeout | CORBA unsigned long long型 | ○ | ○ |
OrderPolicy | CORBA short型 | × | ○ |
DiscardPolicy | CORBA short型 | × | ○ |
ConnectionReliability | CORBA short型 | × | ○(静的チャネルのみ) |
EventReliability | CORBA short型 | × | ○(静的チャネルのみ) |
QoSプロパティ項目について説明します。
(1) Priority
メッセージの優先度を-3から3までの範囲で、1単位に指定します。数字が大きいほど優先度が高く、優先度の高い順に送信します。
メッセージ単位の設定を省略した場合は、チャネル単位の設定が適用されます。チャネル単位の設定がない場合は、0が適用されます。
なお、本指定が有効となるのは、QoSプロパティ項目のOrderPolicyに、PriorityOrderを指定した場合です。PriorityOrderを指定しない場合は、優先度に関係なく最初に送信されたメッセージから配信されます。
また、QoSプロパティ項目のDiscardPolicyにPriorityOrderを指定した場合は、メッセージの優先度の低い順に破棄します。
(2) Timeout
メッセージの生存時間を秒単位に、0以上の整数で設定します。ノーティフィケーションサービスのイベントチャネルに蓄積した時間からTimeoutで指定された時間が経過すると、メッセージを破棄します。生存時間を無限大にする場合は、0を設定してください。
メッセージ単位の設定を省略した場合は、チャネル単位の設定が適用されます。チャネル単位の設定も省略された場合は、蓄積されたイベントデータの生存時間(essetcnfコマンドおよびessetcnfchnlコマンドの-ltimeオプションで指定)が適用されます。
Timeoutに大きな値を設定し、かつコンシューマがメッセージを受信しない状態が続くと、ノーティフィケーションサービスのイベントチャネルにはメッセージが蓄積されたままとなるため、ノーティフィケーションサービスのイベントチャネルのプロセスが必要とするメモリサイズが大きくなります。
(3) OrderPolicy
ノーティフィケーションサービスのイベントチャネルで、メッセージを配信する方法を、以下の値で設定します。省略した場合は、FifoOrderが適用されます。
指定項目 | 設定値 | 意味 |
---|---|---|
AnyOrder | 0 | 配信順序は、不定となります。 |
FifoOrder | 1 | 最初に格納されたメッセージから配信します。 |
PriorityOrder | 2 | メッセージの優先度の高い順に従って配信します。 |
(4) DiscardPolicy
ノーティフィケーションサービスのイベントチャネルに蓄積できるメッセージ最大数を超えて、メッセージが蓄積された場合の対処方法を、以下の値で設定します。省略した場合は、FifoOrderが適用されます。
指定項目 | 設定値 | 意味 |
---|---|---|
AnyOrder | 0 | 破棄順序は、不定となります。 |
FifoOrder | 1 | 最初に格納されたメッセージから破棄します。 |
PriorityOrder | 2 | メッセージの優先度の低い順に従って破棄します。 |
LifoOrder | 4 | 一番新しく格納されたメッセージから破棄します。 |
RejectNewEvents(注) | 5 | メッセージのpush要求をエラーとします。 |
注)トランザクション運用を行う場合は、RejectNewEventsが適用されます。
(5) ConnectionReliability
ノーティフィケーションサービスのイベントチャネルで、サプライヤおよびコンシューマの接続情報をBestEffort(揮発化)またはPersistent(不揮発化)にするかを、以下の値で設定します。
Persistentを指定する場合は、esmkchnlコマンドでイベントチャネルを作成する際に、“-persist con”オプションで、不揮発チャネル運用を指定する必要があります。
BestEffortを指定する場合は、esmkchnlコマンドでイベントチャネルを作成する際に、-persistオプションを指定しないでください。
省略した場合は、esmkchnlコマンドでの指定が有効となります。
指定項目 | 設定値 | 意味 |
---|---|---|
BestEffort | 0 | 接続情報は、揮発化されます。 |
Persistent | 1 | 接続情報は、不揮発化されます。 |
(6) EventReliability
ノーティフィケーションサービスのイベントチャネルで、イベントチャネルにキューイングしたイベントデータをBestEffort(揮発化)またはPersistent(不揮発化)にするかを、以下の値で設定します。
Persistentを指定する場合は、esmkchnlコマンドでイベントチャネルを作成する際に、“-persist all”オプションで、接続情報およびイベントデータの不揮発化を指定する必要があります。
BestEffortを指定する場合は、esmkchnlコマンドでイベントチャネルを作成する際に、-persistオプションを指定しないでください。
省略した場合は、esmkchnlコマンドでの指定が有効となります。
指定項目 | 設定値 | 意味 |
---|---|---|
BestEffort | 0 | イベントデータは、揮発化されます。 |
Persistent | 1 | イベントデータは、不揮発化されます。 |