公式ドキュメントに記載されているAzure Service Busサンプルをhttps://azure.microsoft.com/en-gb/documentation/articles/service-bus-dotnet-how-to-use-topics-subscriptions/で実行しようとしています。Azureサービスバス - SQLFilterが正常に動作しない
作成サブスクリプション
namespaceManager.CreateSubscription(TopicName, "CreatedMessages", new SqlFilter(@"Type = 'Created'"));
メッセージの送信
public void SendMessages()
{
var client = TopicClient.CreateFromConnectionString(_connectionString, TopicName);
for (var i = 0; i < 5; i++)
{
var message = new BrokeredMessage("TestMessage " + i);
if (i%2 == 0)
message.Properties["Type"] = "Created";
else
message.Properties["Type"] = "All";
client.Send(message);
}
}
メッセージの処理
予想通り上記のコードが動作するpublic void ListenMessages()
{
Task.Factory.StartNew(() => SubscribeMessages("CreatedMessages"));
}
public void SubscribeMessages(string subscription)
{
var allMessagesClient = SubscriptionClient.CreateFromConnectionString(_connectionString, TopicName, subscription);
allMessagesClient.OnMessage(message =>
{
try
{
Console.WriteLine($"** {subscription} **");
Console.WriteLine("Body: " + message.GetBody<string>());
Console.WriteLine("MessageID: " + message.MessageId);
Console.WriteLine("Message Type: " + message.Properties["Type"]);
Console.WriteLine();
message.Complete();
}
catch (Exception)
{
message.Abandon();
}
},
new OnMessageOptions
{
AutoComplete = false,
AutoRenewTimeout = TimeSpan.FromMinutes(1)
});
}
。
しかし、 'Type'プロパティの名前が 'MessageType'や 'Name'などに変更されると、SQLFilterが機能しなくなり、メッセージが表示されなくなります。
私は間違っていますか?
古い 'タイプ'ベースのフィルタと新しいフィルタが互いに衝突する可能性はありますか?フィルタは永続的であることに注意してください。 –