/ / Crea argomento servizio se non esiste già - c #, azureservicebus

Crea l'argomento di ServiceBus se non esiste già - c #, azureservicebus

Microsoft ha aggiornato la propria libreria client di ServiceBus .NET e la loro documentazione è attualmente suddivisa tra i vecchi WindowsAzure.ServiceBus pacchetto e il nuovo Microsoft.Azure.ServiceBus pacchetto. Mi piace il nuovo pacchetto, poiché è molto più pulito e ha meno dipendenze. Nel vecchio pacchetto, avevamo metodi come il seguente:

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

La documentazione per la creazione di un argomento a livello di codice utilizza ancora il vecchio pacchetto, con codice come sopra. Il NamespaceManager la classe non è disponibile nel nuovo pacchetto, quindi come posso ottenere l'equivalente di questo?

risposte:

3 per risposta № 1

Sul Github Repo azzurro-servizio-bus-dotnet, spiegano come gestire le entità del bus di servizio:

  • Posso gestire le entità del bus di servizio con questa libreria?:

    Il modo standard per gestire le risorse di Azure è utilizzando Azure Resource Manager. Per poter utilizzare le funzionalità che esistevano in precedenza nella libreria client di .NET Framework Service Bus, è necessario utilizzare il Microsoft.Azure.Management.ServiceBus biblioteca. Ciò abiliterà i casi d'uso che creano dinamicamente / leggi / aggiorna / cancella risorse.

C'è un esempio su come utilizzare questa libreria:

è necessario installare questi pacchetti:

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

La parte interessante per te se vuoi creare un argomento. Si noti che non è necessario controllare se l'argomento esiste. Il gestore risorse di Azure aggiorna la risorsa solo se già esiste.

// 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 per risposta № 2

C'è anche un'opzione futura se puoi aspettare - NamespaceManager come pacchetto autonomo descritto nel seguente problema. Il opzioni che supporterà sono elencati anche nel problema.

  • Get - limitato all'esistenza controlla e restituisce i metadati
  • GetRuntimeInformation (Ottiene tutti i conteggi e l'ultimo stato, Conteggio approssimativo, preciso entro 10 secondi)
  • GetQueueNames, GetTopicNames (elenca i nomi delle entità)
  • Crea entità
  • Elimina entità
  • Aggiornamento (è necessario specificare i dettagli sui metadati da aggiornare, può essere fatto durante l'implementazione)
  • FindOrCreate (Upsert - la coda non esiste creandola)
  • UpdateOrCreate (Upsert)

Se ti piace la facilità di NamespaceManager, quindi vale la pena seguire il problema.