メッセージがシーケンスから欠落している場合、Message Agent (dbremote) は、指定されたポーリング回数を待機してから、欠落しているメッセージの再送を要求します。Message Agent (dbremote) が待機するポーリング回数は、その待機時間と呼ばれます。デフォルトでは、Message Agent (dbremote) の待機時間は 1 です。
Message Agent (dbremote) の待機時間が 1 であり、メッセージ 6 を受信するはずが、メッセージ 7 を受信した場合、Message Agent (dbremote) は何もしません。代わりに、Message Agent (dbremote) は、次のポーリングの結果を待機します。次のポーリングの後、メッセージ 6 が欠落したままである場合、Message Agent (dbremote) はメッセージ 6 の再送要求を発行します。
ポーリング間隔が非常に短く、メッセージの到着順を維持しないメッセージ・システムを使用しているとします。一般的には、順序不整合のメッセージが到着するのは 2 ~ 3 回のポーリングが完了してからになります。この例では、-rp オプションを使用して Message Agent (dbremote) の待機時間を長くし、不要な再送要求が大量に送信されないようにすることをおすすめします。-rp オプションは、ポーリング間隔を設定する -rd オプションとともに使用されることが多くあります。新しいメッセージを確認するポーリング間隔の調整を参照してください。
user1 と user2 という 2 人のリモート・ユーザがいて、両ユーザともポーリング間隔を 30 秒、待機時間を 3 回のポーリングに設定して Message Agent (dbremote) を実行します。たとえば、これらのユーザは、次のコマンドを使用してそれぞれの Message Agent (dbremote) を実行します。
dbremote -c "DSN=SQL Anywhere 11 Demo" -rd 30s -rp 3 |
次の一連の操作によってメッセージは userX.n とマーク付けされます。X はユーザ名であり、n はメッセージ番号です。たとえば、user1.5 は、user1 からの 5 番目のメッセージになります。Message Agent (dbremote) では、メッセージは両方のユーザについて 1 番から開始するものと考えます。
0 秒後
Message Agent (dbremote) が user1.1 と user2.4 を読み込みます。
Message Agent (dbremote) が user1.1 を適用します。
順序不整合のメッセージが user2 から到着したため、この時点の Message Agent (dbremote) の待機時間は user1 が N/A、user2 が 3 です。
30 秒後
Message Agent (dbremote) でのメッセージの読み込み:新着メッセージなし
Message Agent (dbremote) での適用:なし
現時点の Message Agent (dbremote) の待機時間:user1:N/A、user2:2
60 秒後
Message Agent (dbremote) でのメッセージの読み込み:user1.3
Message Agent (dbremote) での適用:新着メッセージなし
Message Agent (dbremote) の待機時間:user1:3、user2:1
90 秒後
Message Agent (dbremote) でのメッセージの読み込み:user1.4
Message Agent (dbremote) での適用:なし
Message Agent (dbremote) の待機時間:user1:3、user2:0
Message Agent (dbremote) が、user2 に再送を要求します。
ユーザが新着メッセージを受信すると、それが予期していたメッセージでなくても Message Agent (dbremote) の待機時間はリセットされます。
120 秒後
Message Agent (dbremote) が user1.2 と user2.2 を読み込みます。
Message Agent (dbremote) が user1.2、user1.3、user1.4、user2.2 を適用します。
Message Agent (dbremote) の待機時間:user1:N/A、user2:N/A
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |