私はソリューションのメッセージブローカーとしてazure service bus topicを使用しています。各サブスクリプションの私の理解によると、Azureメッセージバスは仮想キューを保持しているので、メッセージの受信終了時に妨害されるべきではありません。Azureサービスバストピックサブスクライバ受信オーダー
しかし、現実にはそれは私のシナリオでは、少し異なっている
私はいつかのための受信機を外した場合、入力は大体2秒ごと後、- 、メッセージはAzure上でキューに登録されています。
- その後、受信者を再度接続すると、受信コードがメッセージを非常に迅速に受信しますが、その注文は維持されません。私は、接続されたクライアントを維持する場合
- はしかし、メッセージが順番に受信されている(2秒後に1つのメッセージ)
受信コード
SubscriptionClient Client = SubscriptionClient.CreateFromConnectionString(connectionString, topicname, subscription_name);
// Configure the callback options.
OnMessageOptions options = new OnMessageOptions();
options.AutoComplete = false;
options.AutoRenewTimeout = TimeSpan.FromMinutes(1);
// Callback to handle received messages.
Client.OnMessage((message) =>
{
try
{
// Process message from queue.
string payload = message.GetBody<string>();
var myData = JsonConvert.DeserializeObject<MyData>(payload);
if(myData != null)
{
//Timestamp is not in order, when I connect after few minutes
Debug.WriteLine("SBC ==> " + myData.Timestamp);
}
// Remove message from queue.
message.Complete();
}
catch (Exception)
{
// Indicates a problem, unlock message in queue.
message.Abandon();
}
}, options);
出力
SBC ==> 5/23/2017 1:06:43 PM
SBC ==> 5/23/2017 1:06:45 PM
SBC ==> 5/23/2017 1:07:23 PM
SBC ==> 5/23/2017 1:07:19 PM
SBC ==> 5/23/2017 1:07:27 PM
SBC ==> 5/23/2017 1:07:07 PM
SBC ==> 5/23/2017 1:06:49 PM
SBC ==> 5/23/2017 1:07:47 PM
SBC ==> 5/23/2017 1:06:47 PM
SBC ==> 5/23/2017 1:08:03 PM
SBC ==> 5/23/2017 1:06:55 PM
SBC ==> 5/23/2017 1:06:51 PM
SBC ==> 5/23/2017 1:07:03 PM
SBC ==> 5/23/2017 1:07:51 PM
SBC ==> 5/23/2017 1:06:57 PM
SBC ==> 5/23/2017 1:07:05 PM
SBC ==> 5/23/2017 1:07:39 PM
SBC ==> 5/23/2017 1:07:43 PM
SBC ==> 5/23/2017 1:06:59 PM
SBC ==> 5/23/2017 1:07:09 PM
SBC ==> 5/23/2017 1:06:53 PM
SBC ==> 5/23/2017 1:07:33 PM
SBC ==> 5/23/2017 1:07:25 PM
SBC ==> 5/23/2017 1:07:57 PM
SBC ==> 5/23/2017 1:08:13 PM
なぜそうなのか説明できますか?私にとってはちょっと混乱しますか?
あなたのコメントのおかげで、あなたが持っているこの '問題が出た時間が設定時間後に再試行を開始し、あなたが受信機を外したメッセージということであるMSDN上のいくつかのドキュメントを参照してくださいでした。これは彼らが送られた秩序を失う原因となる。それは本当に役立つだろう。 –
答えに追加されます。 – NPhillips
はそれのための固体ソースを提供することができませんとあなたが質問から引用された部分を削除しました。私は少し前にこの問題を抱えていましたが、それは私の問題の理解でしたが、もちろん私の言葉はそれをバックアップするためのドキュメントがほとんどないと考えています。私はそれが少し古くなっている疑いがあるものの あなたはこのブログの記事が役立つことがあります。 http://www.ben-morris.com/dont-assume-message-ordering-in-azure-service-bus/ – NPhillips