Ich habe drei Warteschlangen und einen Arbeiter, die ich überwachen mag, dass die drei Warteschlangen (oder nur zwei von ihnen)Wie Azure Service Bus-Nachrichten aus mehreren Warteschlangen mit einem Arbeiter
Eine Warteschlange ist qPirate Eine Warteschlange ist qShips lesen Eine Warteschlange ist qPassagiers
Die Idee ist, dass Arbeiter entweder alle 3 von ihnen, 2 von ihnen oder einer von ihnen betrachten und verschiedene Dinge tun, je nachdem, was die Nachricht sagt.
Der Schlüssel ist jedoch, dass eine Nachricht fehlschlägt, weil ship1 offline ist, alle Warteschlangen in qships werden aktualisiert, Arbeiter, die das betrachten und andere Warteschlangen werden etwas davon aufgehängt, da sie versuchen werden, die Nachrichten zu verarbeiten für diese Warteschlange, während nur die anderen Warteschlangen ein wenig betrachtet werden, während die anderen Arbeiter, die die anderen 2 Warteschlangen betrachten und qship überspringen, weiterhin über Nachrichten ohne Überfall oder Verzögerungen arbeiten werden.
Sich online umsehend Ich denke, das ist nicht etwas, das möglich ist, aber es scheint, als wäre es? Vielen Dank im Voraus oder so!
Edit1: Ich werde die Job-Host als auch hinzufügen, um zu versuchen, Dinge zu klären, ein wenig
JobHostConfiguration config = new JobHostConfiguration()
{
DashboardConnectionString = "DefaultEndpointsProtocol=https;AccountName=PiratesAreUs;AccountKey=Yarr",
StorageConnectionString = "DefaultEndpointsProtocol=https;AccountName=PiratesAreUs;AccountKey=Yarr",
NameResolver = new QueueNameResolver()
};
ServiceBusConfiguration serviceBusConfig = new ServiceBusConfiguration()
{
ConnectionString = "Endpoint=AllPirateQueuesLocatedHere;SharedAccessKeyName=PiratesAreUs;SharedAccessKey=Yarr"
};
serviceBusConfig.MessageOptions.AutoComplete = false;
serviceBusConfig.MessageOptions.AutoRenewTimeout = TimeSpan.FromMinutes(1);
serviceBusConfig.MessageOptions.MaxConcurrentCalls = 1;
config.UseServiceBus(serviceBusConfig);
JobHost host = new JobHost(config);
host.RunAndBlock();
Auch die QueueNameResolverClass ist einfach
public class QueueNameResolver : INameResolver
{
public string Resolve(string name)
{
return name;
}
}
ich nicht angezeigt haben um den NameResolver trotzdem mehrere Warteschlangen zu haben, kann ich sagen, dass ich möchte, dass der Jobhost einen bestimmten ServiceBus betrachtet. Ich weiß nicht, wie ich ihm sagen soll, dass er alle Warteschlangen im ServiceBus betrachten soll.
Ich möchte mehrere Servicebustriggers auf diesem Arbeiter, so dass, wenn eine Nachricht an qpirate1 und qships1 gesendet wird, die beide im Servicebus AllPirateQueuesHere befinden, der Arbeiter die Nachricht in qpirate1 aufnehmen, verarbeiten und dann auswählen kann up die Nachricht in qships1 und verarbeiten sie.
Diese Nachrichten werden von Azure Webjobs verarbeitet? – JTaub
Blick auf die Unterschrift, ja John. –
@ ivan-s, kannst du bitte etwas mehr erklären? Ich habe wirklich einige Schwierigkeiten zu verstehen, was Sie erreichen möchten ... Danke – Thomas