SqlFilter für Azure ServiceBus-Themenabonnement filtert nicht

Ich habe eine WinRT-App, mit der ich das Windows Azure Toolkit für Windows 8 verwende. Ich habe ein Setup, in dem Clients, die abonniert sind, Nachrichten, die an ein ServiceBus-Thema gesendet wurden, ignorieren sollen, wenn sie der Absender sind oder wenn die Nachricht älter als zu Beginn ihres Abonnements ist.

In den Eigenschaften meiner BrokeredMessage habe ich zwei Elemente hinzugefügt, um diese Szenarien abzudecken:

message.Properties["Timestamp"] = DateTime.UtcNow.ToFileTime();
message.Properties["OriginatorId"] = clientId.ToString();

clientId ist eine Guid.

Die Teilnehmerseite sieht folgendermaßen aus:

// ti is a class that contains a Topic, Subscription and a bool as a cancel flag.

string FilterName = "NotMineNewOnly";

// Find or create the topic.
if (await Topic.ExistsAsync(DocumentId.ToString(), TokenProvider))
{
    ti.Topic = await Topic.GetAsync(DocumentId.ToString(), TokenProvider);
}
else
{
    ti.Topic = await Topic.CreateAsync(DocumentId.ToString(), TokenProvider);
}

// Find or create this client's subscription to the board.
if (await ti.Topic.Subscriptions.ExistsAsync(ClientSettings.Id.ToString()))
{
    ti.Subscription = await ti.Topic.Subscriptions.GetAsync(ClientSettings.Id.ToString());
}
else
{
    ti.Subscription = await ti.Topic.Subscriptions.AddAsync(ClientSettings.Id.ToString());
}

// Find or create the subscription filter.
if (!await ti.Subscription.Rules.ExistsAsync(FilterName))
{
    // Want to ignore messages generated by this client and ignore any that are older than Timestamp.
    await ti.Subscription.Rules.AddAsync(FilterName, sqlFilterExpression: string.Format("(OriginatorId != '{0}') AND (Timestamp > {1})", ClientSettings.Id, DateTime.UtcNow.ToFileTime()));
}

ti.CancelFlag = false;

Topics[boardId] = ti;

while (!ti.CancelFlag)
{
    BrokeredMessage message = await ti.Subscription.ReceiveAndDeleteAsync(TimeSpan.FromSeconds(30));

    if (!ti.CancelFlag && message != null)
    {
        // Everything gets here!  :(
    }

Ich bekomme alles zurück - also bin ich mir nicht sicher, was ich falsch mache. Wie können Probleme mit Abonnementfiltern am einfachsten behoben werden?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage