Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un hub attività è una rappresentazione dello stato corrente dell'applicazione nell'archiviazione, incluso tutto il lavoro in sospeso. Durante l'esecuzione di un'applicazione, l'hub delle attività salva continuamente il progresso delle funzioni di orchestrazione, attività ed entità. Questo approccio garantisce che l'applicazione possa riprendere l'elaborazione in cui è stata interrotta se viene riavviata dopo essere stata temporaneamente arrestata o interrotta. Un hub delle attività consente alle applicazioni di ridimensionare dinamicamente le unità di calcolo.
Concettualmente, un hub delle attività archivia le informazioni seguenti:
- Stati delle istanze di tutte le istanze di orchestrazione ed entità.
- Messaggi da elaborare, tra cui:
- Eventuali messaggi di attività che rappresentano attività in attesa di esecuzione.
- Tutti i messaggi di istanza in attesa di essere recapitati alle istanze.
I messaggi di attività sono senza stato e possono essere elaborati ovunque. I messaggi di istanza devono essere recapitati a una specifica istanza con stato (orchestrazione o entità), identificata dall'ID istanza.
Internamente, ogni provider di archiviazione può usare un'organizzazione diversa per rappresentare gli stati e i messaggi dell'istanza. Ad esempio, il provider di Azure Storage archivia i messaggi in code Azure Storage, ma il provider MSSQL li archivia in tabelle relazionali. Queste differenze non sono importanti per la progettazione dell'applicazione, ma alcune di esse possono influenzare le caratteristiche delle prestazioni. Per altre informazioni, vedere Rappresentazione nell'archiviazione.
Gli SDK Durable Task usano il Durable Task Scheduler come backend per gli hub attività. Durable Task Scheduler è un servizio completamente gestito che gestisce internamente l'archiviazione.
Elementi di lavoro
I messaggi di attività e i messaggi di istanza nell'hub attività rappresentano il lavoro che l'applicazione deve elaborare. Mentre l'applicazione è in esecuzione, recupera continuamente elementi di lavoro dall'hub attività. Ogni elemento di lavoro elabora uno o più messaggi. Distinguiamo due tipi di elementi di lavoro:
- Elementi di lavoro attività: eseguire una funzione di attività per elaborare un messaggio di attività.
- Elemento di lavoro di Orchestrator: eseguire un agente di orchestrazione o una funzione di entità per elaborare uno o più messaggi di istanza.
I lavoratori possono elaborare più elementi di lavoro contemporaneamente, soggetti ai limiti di concorrenza configurati per ogni lavoratore.
Per altre informazioni sulle limitazioni della concorrenza, vedere Prestazioni e scalabilità.
Una volta che un lavoratore completa un elemento di lavoro, applica gli effetti nell'hub attività. Questi effetti variano in base al tipo di funzione eseguita:
- Una funzione di attività completata crea un messaggio di istanza contenente il risultato, indirizzato all'istanza orchestratore padre.
- Una funzione dell'agente di orchestrazione completata aggiorna lo stato e la cronologia dell'orchestrazione e può creare nuovi messaggi.
- Una funzione di entità completata aggiorna lo stato dell'entità e può anche creare nuovi messaggi di istanza.
Per le orchestrazioni, ogni elemento di lavoro rappresenta un episodio dell'esecuzione dell'orchestrazione. Un episodio inizia quando ci sono nuovi messaggi per l'orchestratore da elaborare. Un messaggio di questo tipo può indicare che l'orchestrazione deve iniziare; o può indicare che un'attività, una chiamata di entità, un timer o una suborchestrazione è stata completata; oppure può rappresentare un evento esterno. Il messaggio attiva un elemento di lavoro che consente all'agente di orchestrazione di elaborare il risultato e di continuare con l'episodio successivo. ** L'episodio termina quando l'orchestratore completa oppure raggiunge un punto in cui deve attendere nuovi messaggi.
Esempio di esecuzione
Valutare l'orchestrazione fan-out-fan-in che avvia due attività in parallelo e attende che entrambe vengano completate.
[FunctionName("Example")]
public static async Task Run([OrchestrationTrigger] IDurableOrchestrationContext context)
{
Task t1 = context.CallActivityAsync<int>("MyActivity", 1);
Task t2 = context.CallActivityAsync<int>("MyActivity", 2);
await Task.WhenAll(t1, t2);
}
using Microsoft.DurableTask;
public class Example : TaskOrchestrator<object?, object?>
{
public override async Task<object?> RunAsync(TaskOrchestrationContext context, object? input)
{
Task t1 = context.CallActivityAsync("MyActivity", 1);
Task t2 = context.CallActivityAsync("MyActivity", 2);
await Task.WhenAll(t1, t2);
return null;
}
}
Dopo l'avvio di questa orchestrazione da parte di un client, l'applicazione lo elabora come sequenza di elementi di lavoro. Ogni elemento di lavoro completato aggiorna lo stato dell'hub attività quando esegue il commit. Questa è la procedura:
- Un client richiede di avviare una nuova orchestrazione con id istanza "123". Dopo che il cliente completa la richiesta, il task hub contiene un segnaposto per lo stato di orchestrazione e un messaggio di istanza.
L'etichetta ExecutionStarted è uno dei molti tipi di eventi storici che identificano i vari tipi di messaggi ed eventi coinvolti nella cronologia di un'orchestrazione.
- Un processo di lavoro esegue un elemento di lavoro dell'agente di orchestrazione per elaborare il messaggio
ExecutionStarted. Chiama la funzione di orchestrazione che avvia l'esecuzione del codice di orchestrazione. Questo codice pianifica due attività e quindi arresta l'esecuzione quando è in attesa dei risultati. Quando il lavoratore effettua il commit di questo elemento di lavoro, l'hub delle attività contiene
Lo stato di runtime è ora Running, sono stati aggiunti due nuovi TaskScheduled messaggi e la cronologia contiene ora i cinque eventi OrchestratorStarted, , ExecutionStartedTaskScheduled, TaskScheduled, OrchestratorCompleted. Questi eventi rappresentano il primo episodio dell'esecuzione dell'orchestrazione.
- Un lavoratore esegue un attività di lavoro per elaborare uno dei
TaskScheduledmessaggi. Invoca la funzione attività con l'input "2". Al termine della funzione di attività, viene creato unTaskCompletedmessaggio contenente il risultato. Quando il lavoratore effettua il commit di questo elemento di lavoro, l'hub delle attività contiene
- Un lavoratore esegue un elemento di lavoro di orchestrazione per elaborare il
TaskCompletedmessaggio. Se l'orchestrazione è ancora memorizzata nella cache, può semplicemente riprendere l'esecuzione. Altrimenti, il processo di lavoro ricalca la cronologia per recuperare lo stato corrente dell'orchestrazione. Continua quindi l'orchestrazione, fornendo il risultato dell'attività. Dopo aver ricevuto questo risultato, l'orchestrazione è ancora in attesa del risultato dell'altra attività, quindi ancora una volta interrompe l'esecuzione. Quando il lavoratore effettua il commit di questo elemento di lavoro, l'hub delle attività contiene
La cronologia dell'orchestrazione contiene ora altri tre eventi OrchestratorStarted, , TaskCompletedOrchestratorCompleted. Questi eventi rappresentano il secondo episodio dell'esecuzione dell'orchestrazione.
- Un processo di lavoro esegue un elemento di lavoro dell'attività per elaborare il messaggio rimanente
TaskScheduled. Chiama la funzione attività con l'input "1". Quando il lavoratore effettua il commit di questo elemento di lavoro, l'hub delle attività contiene
- Un lavoratore esegue un altro elemento di lavoro dell'orchestratore per elaborare il
TaskCompletedmessaggio. Dopo aver ricevuto questo secondo risultato, l'orchestrazione viene completata. Quando il lavoratore effettua il commit di questo elemento di lavoro, l'hub delle attività contiene
Lo stato di runtime è ora Completede la cronologia dell'orchestrazione ora contiene quattro altri eventiOrchestratorStarted, , TaskCompleted, ExecutionCompletedOrchestratorCompleted. Questi eventi rappresentano il terzo e ultimo episodio dell'esecuzione di questa orchestrazione.
La cronologia finale per l'esecuzione di questa orchestrazione contiene quindi i 12 eventi: OrchestratorStarted, ExecutionStarted, TaskScheduled, TaskScheduled, OrchestratorCompleted, OrchestratorStarted, TaskCompleted, OrchestratorCompleted, OrchestratorStarted, TaskCompleted, ExecutionCompleted, OrchestratorCompleted.
Annotazioni
La pianificazione mostrata non è l'unica: esistono molte pianificazioni leggermente diverse. Ad esempio, se la seconda attività viene completata in precedenza, entrambi i TaskCompleted messaggi di istanza possono essere elaborati da un singolo elemento di lavoro. In tal caso, la cronologia di esecuzione è un po' più breve, perché sono presenti solo due episodi e contiene i 10 eventi seguenti: OrchestratorStarted, ExecutionStartedTaskScheduledTaskScheduledOrchestratorCompletedOrchestratorStarted, TaskCompleted, TaskCompleted, , . ExecutionCompletedOrchestratorCompleted
Gestione dell'hub attività Pianificatore di attività durevole
Questa sezione illustra come creare e gestire hub attività quando si usa il back-end dell'Utilità di pianificazione attività permanenti. Creare le risorse del scheduler e del task hub in modo esplicito prima che vengano usate dall'applicazione.
Creare un pianificatore e un hub attività
Creare un pianificatore e un hub di attività usando il portale di Azure, Azure CLI, Azure Resource Manager (ARM) o Bicep.
- Portale Azure
- Azure CLI
- Azure Resource Manager
- Bicep
Nel portale di Azure cercare Durable Task Scheduler e selezionarlo dai risultati.
Selezionare Crea per aprire il riquadro di creazione dello schedulatore.
Compilare i campi nella scheda Informazioni di base, incluse il gruppo di risorse, il nome del pianificatore, la regione e lo SKU. Selezionare Rivedi e crea.
Al termine della convalida, selezionare Crea. La distribuzione richiede fino a 15 minuti.
Dopo aver creato lo scheduler, passare alla risorsa dello scheduler. Nella pagina Panoramica, creare un nuovo hub delle attività.
Importante
L'elenco 0.0.0.0/0 indirizzi IP consentiti consente l'accesso da qualsiasi indirizzo IP. Per le distribuzioni di produzione, limitarlo solo agli intervalli IP necessari.
Gli esempi precedenti usano lo SKU dedicato. Il Pianificatore di attività durevole offre anche uno SKU A consumo. Per ulteriori informazioni sulla gestione delle risorse di Durable Task Scheduler, vedere Sviluppare con Durable Task Scheduler.
Configurare l'autenticazione basata su identità
Durable Task Scheduler supporta solo l'autenticazione dell'identità gestita. Non supporta le stringhe di connessione con le chiavi di archiviazione. Assegnare il ruolo con controllo degli accessi in base al ruolo appropriato a un'identità gestita e configurare l'app per l'uso di tale identità.
Sono disponibili i ruoli seguenti:
| Ruolo | Descrizione |
|---|---|
| Collaboratore ai dati delle attività durevoli | Accesso completo ai dati. Superinsieme di tutti gli altri ruoli. |
| Lavoratore attività durevoli | Interagire con il pianificatore per l'elaborazione di orchestrazioni, attività ed entità. |
| Lettore dati attività durevoli | Accesso in sola lettura ai dati di orchestrazione ed entità. |
Annotazioni
La maggior parte delle app richiede il ruolo Collaboratore dati per attività durevole.
Usare le identità gestite assegnate dall'utente quando possibile perché non sono associate al ciclo di vita dell'app ed è possibile riutilizzarle dopo la rimozione dell'app.
- Portale Azure
- Azure CLI
- Azure Resource Manager
- Bicep
Accedere alla risorsa dell'utilità di pianificazione o dell'hub attività nel portale di Azure.
Selezionare Controllo di accesso (IAM) dal menu a sinistra.
Seleziona Aggiungi>Aggiungi assegnazione ruolo.
Cercare e selezionare Collaboratore dati attività durevole. Seleziona Avanti.
In Assegna accesso a, selezionare Identità gestita. Selezionare + Seleziona membri.
Selezionare Identità gestita assegnata dall'utente, scegliere l'identità e selezionare Seleziona.
Selezionare Rivedi e assegna per completare.
Passare all'app per le funzioni e selezionare Impostazioni>Identità. Selezionare la scheda Assegnato all'utente e aggiungere l'identità.
Dopo aver assegnato l'identità, aggiungere le variabili di ambiente seguenti all'app:
| Variable | Valore |
|---|---|
TASKHUB_NAME |
Nome dell'hub attività. |
DURABLE_TASK_SCHEDULER_CONNECTION_STRING |
Endpoint={scheduler endpoint};Authentication=ManagedIdentity;ClientID={client id} |
Annotazioni
Se si usa un'identità gestita assegnata dal sistema, omettere il segmento ClientID dal connection string: Endpoint={scheduler endpoint};Authentication=ManagedIdentity.
Per informazioni complete sulla configurazione delle identità, vedere Configurare l'identità gestita per Durable Task Scheduler.
Più applicazioni
Se più applicazioni condividono lo stesso scheduler, configurare ogni applicazione con un hub delle attività separato. Un unico scheduler può contenere più hub di attività. Ogni applicazione deve connettersi al proprio hub attività per evitare conflitti. In caso contrario, le applicazioni competono per i messaggi, che potrebbero comportare un comportamento indefinito, incluse le orchestrazioni che si bloccano in modo imprevisto.
Gestione dell'hub attività del provider di archiviazione BYO
Questa sezione illustra la creazione e l'eliminazione dell'hub attività, usando correttamente gli hub attività durante l'esecuzione di più app per le funzioni e controllando il contenuto dell'hub attività. Si applica ai provider di archiviazione BYO (Bring Your Own): Azure Storage, Netherite e MSSQL.
Creazione ed eliminazione
Un hub attività vuoto con tutte le risorse necessarie viene creato automaticamente nell'archiviazione quando un'app per le funzioni viene avviata per la prima volta.
Se si usa il provider di Azure Storage, non è necessaria alcuna configurazione aggiuntiva. In caso contrario, seguire le istruzioni per configurare i provider di archiviazione per assicurarsi che il provider di archiviazione possa configurare e accedere correttamente alle risorse di archiviazione necessarie per l'hub attività.
Annotazioni
L'hub delle attività non viene eliminato automaticamente quando si arresta o si elimina l'applicazione di funzioni. Per rimuovere tali dati, eliminare manualmente l'hub attività, il suo contenuto specifico o l'account di archiviazione contenitore.
Suggerimento
In uno scenario di sviluppo, potrebbe essere spesso necessario riavviare da uno stato iniziale. A tale scopo, è sufficiente modificare il nome dell'hub attività configurato. Questa modifica forza la creazione di un nuovo hub attività vuoto quando si riavvia l'applicazione. I dati precedenti non vengono eliminati in questo caso.
Diverse applicazioni di funzioni
Se più app per le funzioni condividono un account di archiviazione, configurare ogni app per le funzioni con un nome di hub attività separato. Questo requisito si applica anche agli slot di staging: configurare ogni slot di staging con un nome univoco per ogni hub attività. Un singolo account di archiviazione può contenere più hub di attività. Questa restrizione si applica in genere anche ad altri provider di archiviazione.
Importante
Per impostazione predefinita, il nome dell'app viene usato come nome dell'hub attività, che garantisce che la condivisione accidentale degli hub attività non si verifichi. Se si configurano esplicitamente i nomi dell'hub attività per le app in host.json, assicurarsi che siano univoci. In caso contrario, le app multiple competono per i messaggi, che potrebbero comportare un comportamento indefinito, incluse le orchestrazioni che si bloccano in modo imprevisto nello stato Pending o Running. L'unica eccezione è se si distribuiscono copie della stessa app in più aree. In questo caso, usare lo stesso hub delle attività per le copie.
Il diagramma seguente illustra un hub di attività per ogni app di funzione negli account di Azure Storage condivisi e dedicati.
Annotazioni
L'eccezione alla regola di condivisione dell'hub attività è se si sta configurando l'app per il ripristino di emergenza regionale. Per altre informazioni, vedere l'articolo ripristino di emergenza e distribuzione geografica .
Ispezione del contenuto
Esistono diversi modi comuni per esaminare i contenuti di un hub di attività:
- All'interno di un'app per le funzioni, l'oggetto client fornisce metodi per eseguire query nell'archivio di istanze. Per altre informazioni sui tipi di query supportate, consulta l'articolo Gestione istanze.
- Analogamente, l'API HTTP offre richieste REST per eseguire query sullo stato di orchestrazioni ed entità. Per altri dettagli, vedere Le informazioni di riferimento sulle API HTTP .
- Lo strumento Durable Functions Monitor può esaminare gli hub attività e offre varie opzioni per la visualizzazione visiva.
Per alcuni provider di archiviazione, è anche possibile esaminare l'hub delle attività accedendo direttamente all'archiviazione sottostante.
- Se si usa il provider di Azure Storage, gli stati dell'istanza vengono archiviati nel Instance Table e nella tabella History Table, che è possibile esaminare usando strumenti come Azure Storage Explorer.
- Se si usa il provider di archiviazione MSSQL, utilizzare le query e gli strumenti SQL per esaminare il contenuto del task hub nel database.
Rappresentazione nell'archiviazione
Ogni provider di archiviazione usa un'organizzazione interna diversa per rappresentare gli hub di attività nella memoria di archiviazione. La comprensione di questa organizzazione, anche se non necessaria, può essere utile per la risoluzione dei problemi o per il tentativo di soddisfare obiettivi di prestazioni, scalabilità o costi.
Gli SDK di attività durevoli utilizzando il Pianificatore di attività durevole come back-end, che gestisce internamente lo stato dell'hub di attività.
Provider del Pianificatore di attività durevoli
Durable Task Scheduler è un provider backend completamente gestito che archivia internamente tutti gli stati dell'hub delle attività. A differenza dei provider di archiviazione BYO (Bring Your Own), non è necessario configurare o gestire un'infrastruttura di archiviazione sottostante. Ogni risorsa dello schedulatore (Microsoft.DurableTask/schedulers) ha risorse di calcolo e memoria dedicate e può contenere uno o più hub di attività (Microsoft.DurableTask/schedulers/taskHubs).
Poiché l'Utilità di pianificazione attività permanenti gestisce internamente l'archiviazione, non è possibile esaminare direttamente i dati sottostanti. In alternativa, utilizzare il dashboard del Pianificatore di attività durevole per monitorare ed eseguire query sulle istanze di orchestrazione.
Per maggiori informazioni sulle opzioni dei fornitori di servizi di archiviazione BYO e sul loro confronto, consultare i provider di archiviazione di Durable Functions.
provider di archiviazione Azure
Il provider Azure Storage rappresenta l'hub di attività nello storage tramite i seguenti componenti:
- Due tabelle Azure archivia gli stati dell'istanza.
- Una Azure Queue archivia i messaggi di attività.
- Una o più code Azure archiviano i messaggi di istanza. Ognuna di queste cosiddette code di controllo rappresenta una partizione assegnata a un subset di tutti i messaggi di istanza, in base all'hash dell'ID istanza.
- Alcuni contenitori BLOB aggiuntivi usati per i BLOB di leasing o i messaggi di grandi dimensioni.
Ad esempio, un hub di attività denominato xyz con PartitionCount = 4 contiene le seguenti code e tabelle:
Le sezioni seguenti descrivono questi componenti e i relativi ruoli in modo più dettagliato.
Per altre informazioni sul modo in cui gli hub attività sono rappresentati dal provider di Azure Storage, vedere la documentazione relativa al provider Azure Storage.
Provider di archiviazione Netherite (percorso di ritiro)
Netherite partiziona tutto lo stato dell'hub delle attività in un numero specificato di partizioni. Nell'archiviazione, queste risorse archiviano i dati:
- Un contenitore di BLOB di Azure Storage che contiene tutti i BLOB, raggruppati per partizione.
- Una Azure Tabella che contiene le metriche pubblicate sulle partizioni.
- Namespace Azure Event Hubs per trasferire messaggi tra partizioni.
Ad esempio, un hub attività denominato mytaskhub con PartitionCount = 32 è rappresentato nell'archiviazione come indicato di seguito:
Annotazioni
Tutto lo stato dell'hub attività viene archiviato all'interno del contenitore BLOB x-storage. La DurableTaskPartitions tabella e lo spazio dei nomi di Hub eventi contengono dati ridondanti: se i relativi contenuti vengono persi, possono essere ripristinati automaticamente. Non è quindi necessario configurare lo spazio dei nomi Azure Event Hubs per conservare i messaggi oltre l'ora di scadenza predefinita.
Netherite usa un meccanismo di event sourcing, basato su un registro e checkpoint, per rappresentare lo stato corrente di una partizione. I BLOB in blocchi e i BLOB di pagine archiviano i dati. Non è possibile leggere questo formato direttamente dall'archiviazione, quindi l'app per le funzioni deve essere in esecuzione quando si esegue una query nell'archivio di istanze.
Per ulteriori informazioni sugli hub delle attività per il provider di archiviazione Netherite, vedere Informazioni sugli hub delle attività per il provider di archiviazione Netherite.
Provider di archiviazione MSSQL
Tutti i dati dell'hub attività vengono archiviati in un singolo database relazionale, usando queste tabelle:
- Le
dt.Instancestabelle edt.Historyarchiviano gli stati dell'istanza. - La tabella
dt.NewEventsarchivia i messaggi dell'istanza. - La
dt.NewTaskstabella archivia i messaggi di attività.
Per consentire la coesistenza indipendente di più hub attività nello stesso database, ogni tabella include una colonna TaskHub come parte della chiave primaria. A differenza degli altri due provider, il provider MSSQL non dispone di partizioni.
Per altre informazioni sugli hub attività per il provider di archiviazione MSSQL, vedere Informazioni sull'hub attività per il provider di archiviazione Microsoft SQL (MSSQL).
Nomi del task hub
Gli hub attività sono identificati da un nome conforme a queste regole:
- Contiene solo caratteri alfanumerici
- Inizia con una lettera
- Lunghezza minima di 3 caratteri, lunghezza massima di 45 caratteri
Dichiarare il nome dell'hub delle attività nel file host.json, come illustrato nell'esempio seguente.
host.json (Funzioni 2.0)
{
"version": "2.0",
"extensions": {
"durableTask": {
"hubName": "MyTaskHub"
}
}
}
host.json (Funzioni 1.x)
{
"durableTask": {
"hubName": "MyTaskHub"
}
}
È anche possibile configurare hub attività usando le impostazioni dell'app, come illustrato nel file di esempio seguente host.json :
host.json (Funzioni 1.x)
{
"durableTask": {
"hubName": "%MyTaskHub%"
}
}
host.json (Funzioni 2.0)
{
"version": "2.0",
"extensions": {
"durableTask": {
"hubName": "%MyTaskHub%"
}
}
}
Il nome dell'hub di attività viene impostato sul valore dell'impostazione dell'app MyTaskHub. Il file seguente local.settings.json illustra come definire l'impostazione MyTaskHub come samplehubname:
{
"IsEncrypted": false,
"Values": {
"MyTaskHub" : "samplehubname"
}
}
Annotazioni
Quando si usano gli slot di distribuzione, è una buona pratica configurare il nome del task hub usando le impostazioni dell'app. Se si desidera assicurarsi che un determinato slot usi sempre un particolare hub delle attività, utilizzare le impostazioni dell'applicazione "slot-sticky".
Oltre a host.json, i nomi dell'hub attività possono essere configurati anche nei metadati di associazione del client di orchestrazione. Questa configurazione è utile quando è necessario accedere a orchestrazioni o entità che risiedono in un'app per le funzioni separata. Il codice seguente illustra come scrivere una funzione che usa il binding del client di orchestrazione per lavorare con un hub di attività configurato come impostazione dell'applicazione.
[FunctionName("HttpStart")]
public static async Task<HttpResponseMessage> Run(
[HttpTrigger(AuthorizationLevel.Function, methods: "post", Route = "orchestrators/{functionName}")] HttpRequestMessage req,
[DurableClient(TaskHub = "%MyTaskHub%")] IDurableOrchestrationClient starter,
string functionName,
ILogger log)
{
// Function input comes from the request content.
object eventData = await req.Content.ReadAsAsync<object>();
string instanceId = await starter.StartNewAsync(functionName, eventData);
log.LogInformation($"Started orchestration with ID = '{instanceId}'.");
return starter.CreateCheckStatusResponse(req, instanceId);
}
Annotazioni
L'esempio precedente è per Durable Functions 2.x. Per Durable Functions 1.x, usare DurableOrchestrationContext anziché IDurableOrchestrationContext. Per altre informazioni sulle differenze tra le versioni, vedere l'articolo Durable Functions Versions.
Annotazioni
La configurazione dei nomi dei task hub nei metadati di associazione client è necessaria solo quando si utilizza un'applicazione di funzioni per accedere a orchestrazioni ed entità in un'altra applicazione di funzioni. Se le funzioni client sono definite nella stessa app per le funzioni delle orchestrazioni e delle entità, evitare di specificare i nomi dell'hub di attività nei metadati di associazione. Per impostazione predefinita, tutte le associazioni client ottengono i metadati dell'hub attività dalle impostazioni di host.json.
I nomi degli hub delle attività iniziano con una lettera e sono costituiti solo da lettere e numeri. Se non specificato, viene usato un nome predefinito dell'hub attività, come illustrato nella tabella seguente:
| Versione dell'estensione persistente | Nome predefinito dell'hub attività |
|---|---|
| 2.x | Quando viene distribuito in Azure, il nome dell'hub delle attività deriva dal nome dell'app per le funzioni. Quando si esegue all'esterno di Azure, il nome predefinito dell'hub attività è TestHubName. |
| 1.x | Il nome predefinito dell'hub attività per tutti gli ambienti è DurableFunctionsHub. |
Per ulteriori informazioni sulle differenze tra le versioni dell'estensione, consultare l'articolo sulle versioni di Durable Functions.
Annotazioni
Il nome è ciò che distingue un "task hub" da un altro quando sono presenti più "task hub" in un account di archiviazione condiviso. Se si dispone di più app per le funzioni che condividono lo stesso account di archiviazione condiviso, configurare esplicitamente nomi diversi per ogni hub attività nei file host.json. In caso contrario, le app con funzioni multiple competono tra loro per i messaggi, il che potrebbe comportare un comportamento non definito, comprese le orchestrazioni che si bloccano in modo inatteso negli stati Pending o Running.