2017-01-16 6 views
0

2つのAzureサービスバスキューが同じ名前空間にあります。キューの1つにScheduledEnqueueTimeUtc(「スケジュールされたキュー」)を使用してスケジュールされたメッセージを配置しています。もう1つのキュー(「現在のキュー」)にすぐに処理したいメッセージです。Azureサービスバスキューを使用する自動転送with ScheduledEnqueueTimeUtc

私がしたいのは、メッセージがScheduledEnqueueTimeUtcにヒットしたときに、メッセージを "now-queue"に転送するための "scheduled-queue"の自動転送プロパティを設定することです。待ち行列転送はそのように機能しますか?または、キュー自動転送は、エンキューされたメッセージとエンキューされていないメッセージの両方を直ちに送信しますか?

enqueue datetimeに達していないため、キュー内の現在「見えない」メッセージを転送処理でどのように処理するか説明するためのドキュメントやサンプルはどこにも見つかりませんでした。

答えて

0

転送は、元のキューから宛先キューにすべてのメッセージを送信します。宛先キューを調べると、ScheduledEnqueueTimeUtcというメッセージが表示されますが、到着するまで受信することはできません。

+0

どのように動作するのかお礼してください。エンキューされたメッセージのみを転送するオプションがあって、スケジューリングされていないメッセージとスケジュールされていないメッセージを区別するための機能を使用できるようにしたいと考えています。エンキューしたらメッセージを移動するジョブを簡単に書くことができますが、自動ではうまくいきました。 – JeffC

+0

今後のメッセージが別のキューにあることがなぜ心配ですか? –

+0

将来のメッセージを分離して、そのキューをメインの処理キューから管理して処理できるようにしたいと思いました。私のメインキューはすでに非常に忙しく、将来のメッセージキューがどのくらい大きくなるかはわかりません。だから私はメインキューから未来を分割したいと思っていました。将来の予想される負荷を確認するために、将来のキューを覗くこともあります。必要に応じてスケジュールされたメッセージに処理を分割することもできます。 – JeffC

1

あなたはトピックと2つのサブスクリプションでそれを達成できるはずです。私は今日自分自身でレクリストをする時間がないので、これがうまくいかない場合はお知らせください:

2つのサブスクリプションでトピックを作成してください。 1つを「今」と呼び、もう1つを「後で」と呼んでいます。 "ScheduledTime"と呼ばれるカスタムプロパティを持つメッセージを送信し、後で "予定されたキュー"にメッセージを表示する(これらの名前はすべて構成されています)

作成時「now」サブスクリプションをForwardToに「now-queue」に設定し、C#を使用している場合はCreateSubscription(SubscriptionDescription、RuleDescription)オーバーロードでルールを追加します。これにより、フィルタをTrueFilterに設定してActionに設定しますスケジュールされたタイムアウトをスローする式 "REMOVE ScheduledTime"でSqlRuleActionに渡します。

「後で」のサブスクリプションを作成する場合、ルールがコピーされ、「予定のキュー」にForwardToに設定し、TrueFilterでルールを追加し、「SET sys.ScheduledEnqueueTimeUtc=ScheduledTime; REMOVE ScheduledTime

を行いSqlRuleActionにアクションを設定します転送する前にターゲットキューの望ましいエンキュー時間に値を設定します。

理論上はすべて動作するはずです。

+0

Clemens、それは興味深いアプローチであり、私はそれがおそらくどのように機能するかを見ています。私は自分の必要性を考え、それを単純にして、将来のキューメッセージを処理し、必要に応じてそれらをメインの作業キューに移動するつもりです。私はそれが働いて、すべてがスムーズに実行されています。しかし、メッセージルーティングを行うためにトピック、プロパティ、フィルタ、およびアクションを使用して説明した方法は本当に好きです。私が構築しているシステムの別の部分について説明したことを探求します。ありがとう! – JeffC

+0

@Clemens、ScheduleTimeが空でSqlFilterを使用する場合、「今」サブスクリプションのルールを評価してはいけませんか?ジェフはすぐに処理される予定のメッセージを望んでいませんでした。 –

+0

私はちょうどそこに存在する場合、 "今"のためのプロパティをクリーニングしています。遅れは課されません。 –

関連する問題