/ / Erstellen Sie ein ServiceBus-Thema, wenn es nicht bereits existiert - c #, azureservicebus

Erstellen Sie ein ServiceBus-Thema, wenn es nicht bereits vorhanden ist - c #, azureservicebus

Microsoft hat ihre .NET ServiceBus-Clientbibliothek aktualisiert, und ihre Dokumentation wird derzeit zwischen den alten aufgeteilt WindowsAzure.ServiceBus Paket und das neue Microsoft.Azure.ServiceBus Paket. Ich mag das neue Paket, da es viel sauberer ist und weniger Abhängigkeiten hat. Im alten Paket hatten wir Methoden wie die folgenden:

if (!namespaceManager.TopicExists(topicName))
{
var topic = new TopicDescription(topicName);
namespaceManager.CreateTopic(topic);
}

In der Dokumentation zum programmgesteuerten Erstellen eines Themas wird weiterhin das alte Paket mit dem oben genannten Code verwendet. Das NamespaceManager Klasse ist im neuen Paket nicht verfügbar. Wie kann ich das Äquivalent erreichen?

Antworten:

3 für die Antwort № 1

Auf dem Github Repo azur-service-bus-dotnetSie erklären, wie Sie Service Bus-Entitäten verwalten:

  • Kann ich Service Bus-Einheiten mit dieser Bibliothek verwalten?:

    Die Standardmethode zum Verwalten von Azure-Ressourcen besteht in der Verwendung von Azure-Ressourcenmanager. Um Funktionen zu verwenden, die zuvor in der .NET Framework Service Bus-Clientbibliothek vorhanden waren, müssen Sie die Microsoft.Azure.Management.ServiceBus Bibliothek. Dies aktiviert Anwendungsfälle, die Ressourcen dynamisch erstellen / lesen / aktualisieren / löschen.

Es gibt ein Beispiel für die Verwendung dieser Bibliothek:

Sie müssen diese Pakete installieren:

  • Microsoft.Azure.Management.ServiceBus
  • Microsoft.Azure.Management.ResourceManager
  • Microsoft.IdentityModel.Clients.ActiveDirectory

Der interessante Teil für Sie, wenn Sie ein Thema erstellen möchten. Beachten Sie, dass Sie nicht überprüfen müssen, ob das Thema existiert. Azure Resource Manager aktualisiert die Ressource nur, wenn sie bereits vorhanden ist.

// On you"ve got the ServiceBusManagementClient
ServiceBusManagementClient sbClient = ...

sbClient.Topics.CreateOrUpdateAsync("resource group name", "namespace name", "topic name",
new Microsoft.Azure.Management.ServiceBus.Models.SBTopic());

1 für die Antwort № 2

Es gibt auch eine zukünftige Option, wenn Sie warten können - NamespaceManager als eigenständiges Paket beschrieben in der folgendes Problem. Das Optionen wird es unterstützen sind in der Ausgabe ebenfalls aufgeführt.

  • Get - limited to exists check und gib Metadaten zurück
  • GetRuntimeInformation (Holt alle Zählungen und den letzten Status, Ungefähre Anzahl, Genauigkeit innerhalb von 10s)
  • GetQueueNames, GetTopicNames (Namen der Listenentitäten)
  • Erstelle eine Entität
  • Löschen Sie die Entität
  • Update (Benötigt Details zu den zu aktualisierenden Metadaten, kann während der Implementierung durchgeführt werden)
  • FindOrCreate (Upsert - Warteschlange existiert nicht, erstellen Sie sie)
  • UpdateOrCreate (Upsert)

Wenn Sie die Leichtigkeit von NamespaceManagerDann lohnt es sich, dem Thema zu folgen.