Ich entwickle zwei WebJobs für azure: Eine, die Nachrichten in die Service Bus Queue mit einem Thema und eine andere, die den ServiceBusTrigger mit dem gleichen Thema abonniert setzt.Microsoft Azure Service Bus-Warteschlange arbeitet als FIFO
Die Nachrichten werden korrekt an die Service-Bus-Warteschlange gesendet, aber wenn der WebJob den ServiceBusTrigger abonniert hat, werden diese Nachrichten nicht auf FIFO-Basis verarbeitet.
Der Code für die WebJob die Nachrichten in den Servicebus Warteschlange setzt, ist der folgende:
NamespaceManager namespaceManager = NamespaceManager.Create();
// Delete if exists
if (namespaceManager.TopicExists("SampleTopic"))
{
namespaceManager.DeleteTopic("SampleTopic");
}
TopicDescription td = new TopicDescription("SampleTopic");
td.SupportOrdering = true;
TopicDescription myTopic = namespaceManager.CreateTopic(td);
SubscriptionDescription myAuditSubscription = namespaceManager.CreateSubscription(myTopic.Path, "ImporterSubscription");
TopicClient topicClient = TopicClient.Create("SampleTopic");
for(int i = 1; i <= 10; i++)
{
var message = new BrokeredMessage("message"+i);
topicClient.Send(message);
}
topicClient.Close();
Die WebJob die an den Servicebus Triggers subscrited wird, hat den folgenden Code:
namespace HO.Importer.Azure.WebJob.TGZProcessor
{
public class Program
{
static void Main(string[] args)
{
JobHostConfiguration config = new JobHostConfiguration();
config.UseServiceBus();
JobHost host = new JobHost(config);
host.RunAndBlock();
}
public static void WriteLog([ServiceBusTrigger("SampleTopic", "ImporterSubscription")] string message,
TextWriter logger)
{
Console.WriteLine(message));
}
}
}
Wie kann ich erreichen, dass die Nachrichten aus der Warteschlange als FIFO verarbeitet werden?
Vielen Dank im Voraus!
Danke! Was ich tun muss, ist Blobs zu verarbeiten, während sie in einen Container geladen werden. Eine der Voraussetzungen ist, dass sie in der Reihenfolge verarbeitet werden müssen, in der sie zum Blob kommen, so dass ich dachte, dass das Benachrichtigen über eine Service-Bus-Warteschlange, die die Bestellung unterstützen soll, das Problem lösen würde. –
Je nachdem, wie Blobs ankommen, können Sie eine benutzerdefinierte Logik erstellen, um dies zu erreichen. Wenn Sie sicher sind, dass Blobs in Ordnung sind, warum nicht stattdessen einen Blob-Trigger? –