トピックのサブスクリプションを聞いている2つのクライアントがあります。私は次の問題を見ている。メッセージの受信1クライアントが受信した後、クライアントとメッセージ削除のために複数回
問題1:1つのクライアントがメッセージを受信し、それらをマークし
場合は、他のクライアントがメッセージことを受け取ることができません完了します。
しかし、私はそのメッセージを受信して、クライアントがメッセージを受信すると、それは再び受け取るべきではないというように、それを確認するために、すべての私のクライアントが欲しい
問題2:
私はメッセージを承認していない場合完了しました。いくつかの回私はメッセージを複数回受け取っています。
問題3:
メッセージ受信中は、ネットワーク切断を参照してください。しばらくしてから再接続すると、メッセージの受信が再開されます。 ============
if (!namespaceManager.TopicExists("DataCollectionTopic"))
namespaceManager.CreateTopic("DataCollectionTopic");
if (!namespaceManager.SubscriptionExists("DataCollectionTopic", "one"))
namespaceManager.CreateSubscription("DataCollectionTopic", "one");
for(int i=0;i<100;i++)
{
BrokeredMessage bm = new BrokeredMessage("new Topic one");
bm.Label = "hELLLOOOO xcvxvxcvxvxvxc DummyMEssage"+i;
bm.Properties["StoreName"] = "asdasdasqwedas";
bm.Properties["MachineID"] = "Bajjiiiqweq567567wii";
if (namespaceManager == null)
{
Console.WriteLine("\nUnexpected Error");
return;
}
MessageSender sender = messageFactory.CreateMessageSender("DataCollectionTopic");
sender.Send(bm);
for receiving the message
===================
MessageReceiver receiver = await messageFactory.CreateMessageReceiverAsync("DataCollectionTopic/subscriptions/Vijay");
while (true) {
BrokeredMessage receivedMessage = receiver.Receive();
try
{
ProcessMessage(receivedMessage);
// receivedMessage.Complete();
}
catch (Exception e)
{
// receivedMessage.Abandon();
}
}
}
===============
TIA
問題2。最後に「完了」とマークしないと、最終的にタイムアウトが発生します。これにより、もう一度ピックアップすることができます。 – granadaCoder
私はいつでも言及していません。私はクライアントがn人いるので、彼らが立ち上がるとすぐにいつでもアップすることができるので、それらのメッセージを受け取る必要があります。問題は、クライアントを再起動しても、すでに受信したメッセージを再度受信している場合です。時々私は複数のメッセージを受信しています – user1844634
"タイムアウト"機能が組み込まれています。私はデフォルトが30秒だと思う。まあ、それは依存しています。 「ロックの継続時間」はこちらhttps://azure.microsoft.com/en-us/documentation/articles/service-bus-azure-and-service-bus-queues-compared-contrasted/ – granadaCoder