Specificazione delle impostazioni di esecuzione del protocollo di recapito
Quando si configura un protocollo di recapito, è possibile definire varie impostazioni di esecuzione per la configurazione della gestione dei tentativi di ripetizione, degli esiti negativi e del timeout. In questo argomento viene illustrato come specificare queste impostazioni di esecuzione del protocollo di recapito.
Ripetizione del recapito della notifica
Quando il recapito delle notifiche non riesce, il server di distribuzione può tentare di ripeterlo. Configurare una pianificazione dei tentativi per ogni protocollo di recapito utilizzato da una classe di notifica.
La logica dei tentativi viene applicata a livello di elemento di lavoro del server di distribuzione. Se non è possibile recapitare una o più notifiche in un elemento di lavoro, l'elemento di lavoro del server di distribuzione viene esso stesso considerato come non riuscito. Il server di distribuzione può ritentare il recapito dell'elemento di lavoro del server di distribuzione in un momento successivo, in base alla pianificazione specificata.
Quando il server di distribuzione ripete il tentativo per un elemento di lavoro, solo le notifiche che non è stato possibile recapitare durante il tentativo di recapito precedente vengono inviate di nuovo. Tuttavia, se si verifica un errore che impedisce al server di distribuzione di aggiornare lo stato di recapito di una notifica, il server di distribuzione può ritentare il recapito e potenzialmente ripetere l'invio di una notifica duplicata durante il tentativo successivo.
Quando si configura una pianificazione dei tentativi, si specificano uno o più valori di ritardo dei tentativi. Se il recapito di una notifica non riesce, il server di distribuzione attende l'intervallo specificato dal primo valore di ritardo dei tentativi prima di selezionare di nuovo l'elemento di lavoro. Se il recapito della notifica non riesce di nuovo, il server di distribuzione attenderà per il tempo specificato dal secondo ritardo dei tentativi e quindi ripeterà il tentativo di recapito. Il processo continua fino all'esaurimento di tutti i valori di ritardo dei tentativi, oppure finché le notifiche non recapitate scadono, a seconda di quale dei due eventi si verifica per primo.
[!NOTA] Specificare una scadenza per classe di notifica, non per protocollo di recapito. Per ulteriori informazioni, vedere Impostazione della scadenza di una notifica.
Esempio
Nella tabella seguente viene illustrato in che modo il server di distribuzione tenta il recapito della notifica con tre valori di ritardo dei tentativi.
Tentativo di recapito iniziale |
1:00 |
Primo ritardo dei tentativi = 15 minuti |
1:15 |
Secondo ritardo dei tentativi = 30 minuti |
1:45 |
Terzo ritardo dei tentativi = 60 minuti |
2:45 |
I valori di ritardo dei tentativi non influenzano la pianificazione di attivazione del server di distribuzione. Questi valori rappresentano i ritardi minimi. Il ritardo effettivo tra i tentativi potrebbe essere maggiore.
Se sul server si verifica un tempo di inattività prolungato, è possibile che più di un intervallo di ritardo dei tentativi scada senza che il server di distribuzione tenti di ripetere il recapito. In questo caso, il server di distribuzione esegue immediatamente un tentativo sugli elementi di lavoro del server di distribuzione non scaduti quando il server torna in linea. Quindi, riprende la pianificazione di ritardo dei tentativi e attende il periodo specificato nell'intervallo di ritardo successivo prima di ripetere il tentativo.
Per specificare una pianificazione dei tentativi
- Se si definisce un'applicazione tramite XML, definire i singoli ritardi dei tentativi in RetrySchedule Element (ADF).
- Se si definisce un'applicazione a livello di programmazione, definire i singoli ritardi dei tentativi in un oggetto ProtocolRetrySchedule e aggiungerli a un ProtocolRetryScheduleCollection in un oggetto NotificationClassProtocol utilizzando la proprietà ProtocolRetrySchedules (NMO).
Registrazione degli errori di recapito
Gli errori di recapito delle notifiche vengono inseriti nel registro delle applicazioni di Windows dal server di distribuzione a scopo di documentazione. Configurare come e quando il server di distribuzione registra gli eventi di errore di recapito per ogni protocollo di recapito.
Importante: |
---|
Notification Services riceve un feedback limitato sugli errori dai sistemi di recapito esterni. La maggioranza degli errori determinano un "errore di recapito" generico nel log eventi. Errori di recapito significativi possono indicare un problema di configurazione. Per verificare la configurazione di recapito, esaminare le impostazioni del canale di recapito nella configurazione dell'istanza e i valori del campo protocollo nella definizione dell'applicazione. |
La prima proprietà che è possibile configurare è relativa al numero di errori che devono verificarsi prima che il server di distribuzione registri un evento nel registro applicazioni. La seconda proprietà che è possibile configurare è relativa all'intervallo minimo tra la registrazione degli eventi, indipendentemente dal numero di errori. Queste due impostazioni consentono di controllare il numero di eventi inseriti nel registro applicazioni dal server di distribuzione e impediscono che nel registro applicazioni venga inserito un numero eccessivo di voci quando numerosi errori si verificano in un periodo di tempo limitato.
Ad esempio, se il numero di errori è impostato su 5 e l'intervallo è impostato su 10 minuti, è necessario che si verifichino 5 errori prima che il server di distribuzione registri un errore. Dopo 10 minuti, il conteggio degli errori riprende. Dopo altri cinque errori, il server di distribuzione scrive un altro evento nel registro applicazioni.
Quando si sviluppa un'applicazione, può essere necessario utilizzare i valori predefiniti, ovvero un errore e zero minuti. Tuttavia, quando un'applicazione è in produzione, si consideri la possibilità di utilizzare valori maggiori per trovare un equilibrio tra necessità di ottenere informazioni sugli errori e desiderio di evitare operazioni di registrazione eccessive.
[!NOTA] Le stored procedure NSDiagnosticDeliveryChannel (Transact-SQL) e NSDiagnosticFailedNotifications (Transact-SQL) possono essere utili nella risoluzioni dei problemi relativi agli errori di recapito.
Per configurare il numero degli errori di recapito prima della registrazione di un evento
- Se si definisce un'applicazione tramite XML, definire il numero di errori di recapito prima della registrazione di un evento in FailuresBeforeLoggingEvent Element (ADF).
- Se si definisce un'applicazione a livello di programmazione, definire il numero di errori di recapito prima della registrazione di un evento utilizzando la proprietà FailuresBeforeEventLog (NMO).
Per configurare l'intervallo tra le registrazioni
- Se si definisce un'applicazione tramite XML, definire l'intervallo tra le registrazioni in FailureEventLogInterval Element (ADF).
- Se si definisce un'applicazione a livello di programmazione, definire l'intervallo tra le registrazioni utilizzando la proprietà FailureEventLogInterval (NMO).
Interruzione del recapito dopo errori consecutivi
Nei casi in cui l'errore di recapito si verifica a causa di un'interruzione prolungata dei servizi di rete, anzichè di condizioni di rete temporanee, il server di distribuzione può interrompere i tentativi di recapito all'interno di un elemento di lavoro per evitare il sovraccarico della rete.
È possibile specificare quanti errori di recapito consecutivi devono verificarsi all'interno di un elemento di lavoro prima che il server di distribuzione annulli i tentativi di recapito ulteriori sulle notifiche nell'elemento di lavoro. Quando tale limite viene raggiunto, il server di distribuzione scrive un messaggio nel registro applicazioni e quindi contrassegna l'elemento di lavoro come non riuscito. In questo caso è possibile che per una o più notifiche nell'elemento di lavoro non venga eseguito alcun tentativo. In presenza di una pianificazione dei tentativi, il server di distribuzione selezionerà l'elemento di lavoro in corrispondenza dell'intervallo dei tentativi successivo e ripeterà il tentativo sia per le notifiche non riuscite sia per per quelle mai tentate.
Per configurare il numero di errori consecutivi prima dell'interruzione del recapito
- Se si definisce un'applicazione tramite XML, definire il numero di errori consecutivi in FailuresBeforeAbort Element (ADF).
- Se si definisce un'applicazione a livello di programmazione, definire il numero di errori consecutivi utilizzando la proprietà FailuresBeforeAbort (NMO).
Limitazione dei destinatari multicast
Per ogni protocollo di recapito, è inoltre possibile limitare il numero dei sottoscrittori che possono ricevere un singolo multicast. Per ulteriori informazioni sul multicast, vedere Impostazione del recapito digest o multicast
Quando si limita il numero di destinatari multicast, il server di distribuzione interrompe l'aggiunta dei sottoscrittori all'elenco dei destinatari multicast quando viene raggiunto il limite. Il server di distribuzione avvia quindi un nuovo elenco e aggiunge i sottoscrittori al nuovo elenco finché viene raggiunto il limite. Il processo continua finché tutte le notifiche multicast all'interno di un elemento di lavoro vengono aggiunte agli elenchi dei destinatari multicast.
Importante: |
---|
Le impostazioni multicast non sono disponibili in SQL Server 2005 Standard Edition. |
Per configurare il limite dei destinatari multicast
- Se si definisce un'applicazione tramite XML, definire il limite dei destinatari multicast in MulticastRecipientLimit Element (ADF).
- Se si definisce un'applicazione a livello di programmazione, definire il limite dei destinatari multicast utilizzando la proprietà MulticastRecipientLimit (NMO).
Impostazione del timeout di un elemento di lavoro
Quando il server di distribuzione seleziona un elemento di lavoro, chiama il formattatore del contenuto per formattare le notifiche e il protocollo di recapito per eseguire il package e recapitare le notifiche. Se un elemento di lavoro è di dimensioni particolarmente grandi, oppure se la distribuzione viene bloccata per qualsiasi motivo, l'elemento di lavoro può utilizzare un thread del server di distribuzione e ritardare l'elaborazione delle altre notifiche.
Se si specifica il timeout di un elemento di lavoro per un protocollo di recapito, il server di distribuzione rilascia l'elemento di lavoro dopo il periodo di tempo specificato. Il server di distribuzione contrassegna l'elemento di lavoro come non riuscito e seleziona di nuovo l'elemento di lavoro se il protocollo di recapito dispone di una pianificazione dei tentativi.
Per configurare il timeout di un elemento di lavoro
- Se si definisce un'applicazione tramite XML, definire il timeout dell'elemento di lavoro in WorkItemTimeout Element (ADF).
- Se si definisce un'applicazione a livello di programmazione, definire il timeout dell'elemento di lavoro utilizzando la proprietà WorkItemTimeout (NMO).
Vedere anche
Concetti
Configurazione della registrazione dei server di distribuzione
Altre risorse
Stored procedure di Notification Services (Transact-SQL)
Configurazione dei protocolli di recapito
Definizione delle classi di notifica
Definizione di applicazioni di Notification Services