Recapito ordinato di messaggi in BizTalk Server

Il recapito ordinato dei messaggi garantisce che i messaggi pubblicati nel database MessageBox in un determinato ordine vengano recapitati a ogni sottoscrittore corrispondente nello stesso ordine di pubblicazione nel MessageBox.

Configurazione del recapito ordinato dei messaggi

Il recapito ordinato dei messaggi può essere configurato nelle seguenti posizioni:

  • Ricevere la forma in un'orchestrazione
  • Porta di trasmissione

Recapito ordinato con i trasporti esistenti

I protocolli sottostanti determinati trasporti, ad esempio FILE e HTTP, non contemplano la nozione di recapito ordinato. Tuttavia, anche con tali trasporti, se la porta associata al trasporto è contrassegnata per il recapito ordinato, BizTalk Server applica il recapito ordinato facendo sì che il trasporto non ottenga il successivo messaggio in uscita finché non è stato trasmesso quello corrente. Per ottenere ciò, BizTalk Server passa ciascun messaggio all'adapter del trasporto in un singolo batch e attende che l'adapter abbia eliminato il messaggio dal MessageBox prima di recapitare all'adapter il messaggio successivo, incluso in un altro batch.

Recapito ordinato per gli adapter personalizzati

Per gli adapter di ricezione personalizzati valgono alcune considerazioni speciali. Se si scrive un adapter personalizzato che supporta il recapito ordinato alla ricezione, è necessario che le seguenti condizioni siano rispettate:

  • Dopo aver inviato un batch di messaggi, l'adattatore di ricezione personalizzato deve attendere il callback di BatchComplete da BizTalk Server prima di inviare il batch successivo. Per altre informazioni, vedere Interfacce per un adattatore di ricezione Batch-Supported.

  • Se si verifica un problema per il messaggio nella pipeline, il messaggio deve essere sospeso, preferibilmente come non ripristinabile. Usare BTS. Proprietà del contesto del messaggio SuspendAsNonResumable in BizTalk Server per contrassegnare il messaggio in modo appropriato.

Nota

L'ordine dei messaggi può venire compromesso se viene ripristinato un messaggio che era stato interrotto in precedenza. Per evitare questo, sospendere i messaggi con errori specificando che non possono essere ripristinati.

Per altre informazioni sulla creazione di una scheda personalizzata, vedere Sviluppo di adattatori personalizzati.

Condizioni per l'elaborazione end-to-end dei messaggi ordinati

Per garantire un recapito ordinato end-to-end, è necessario che vengano soddisfatte le seguenti condizioni:

  • I messaggi devono essere ricevuti con un adapter che ne preserva l'ordine quando vengono inviati a BizTalk Server. In BizTalk Server, esempi di tali adattatori sono MSMQ e MQSeries. Inoltre, è possibile utilizzare adapter HTTP o SOAP per inviare i messaggi in ordine, ma in tal caso è necessario che il client HTTP o SOAP invii i messaggi uno alla volta.

  • È necessario sottoscrivere questi messaggi con una porta di invio con l'opzione Recapito ordinato impostata su True.

  • Se viene usata un'orchestrazione per elaborare i messaggi, è necessario usare solo una singola istanza dell'orchestrazione, l'orchestrazione deve essere configurata per l'uso di una chiamata sequenziale e la proprietà Recapito ordinato della porta di ricezione dell'orchestrazione deve essere impostata su True.

Restrizioni

Il recapito ordinato dei messaggi non è supportato per:

  • Porte di invio dinamiche in BizTalk Server 2013 R2 e versioni precedenti

  • Porte di invio dinamiche in BizTalk Server 2016 (e versioni più recenti) per tali tipi di adapter che non supportano il recapito ordinato nelle porte di invio statiche

  • Trasporti di backup

Interazioni

Se per una porta di trasmissione è configurato il recapito ordinato, è opportuno essere consapevoli delle seguenti interazioni con altri comportamenti configurati in BizTalk Server:

  • Per l'impostazione "Interrompi invio di messaggi successivi in caso di errore del messaggio corrente" per la stessa porta di trasmissione:

    • Risposta errata. Viene sospeso (come non ripristinabile) solo il messaggio con l'errore e procede l'elaborazione di tutti i messaggi successivi. In questo modo si mantiene l'ordine dei messaggi senza errori, ma possono verificarsi salti nella sequenza. Se, ad esempio, vengono ricevuti gli ordini 101, 102 e 103 e l'ordine 102 viene sospeso, verranno elaborati in sequenza gli ordini 101 e 103.

    • Risposta esatta. Viene sospesa l'istanza della porta di trasmissione se per un messaggio si verifica un errore. Tutti i messaggi successivi del set ordinato di messaggi vengono sospesi. L'ordine dei messaggi viene mantenuto perché viene impedito il recapito dei messaggi successivi finché non viene recapitato il messaggio con l'errore.

  • Se una porta di invio di richieste di risposta ha la proprietà "Arresta l'invio di messaggi successivi sull'errore di messaggio corrente" impostata su truee se l'elaborazione dell'interscambio recuperabile è configurata per la fase di disassembly della pipeline di ricezione per la risposta, la porta di invio non interrompe l'invio di messaggi , ovvero l'istanza non viene sospesa) se si verifica un errore recuperabile nel smontare la risposta.

  • Prima di eliminare una porta di trasmissione ordinata, controllare che non vis siano istanze associate ad essa. Se vi sono associate istanze, terminarle prima di eliminare la porta di trasmissione.

Recapito ordinato al trasporto File

I messaggi arrivano all'adapter File in sequenza. L'adapter File può aggiungere i messaggi a un solo file oppure scrivere una sequenza di file, con i seguenti risultati:

  • Se i dati dei messaggi vengono aggiunti a un solo file, i singoli messaggi vengono aggiunti in ordine. L'opzione di recapito ordinato per una porta di trasmissione che utilizza l'adapter File è indicata solo se il trasporto di trasmissione opera in modalità Append.

  • Se i messaggi vengono scritti in singoli file, l'ordine si riflette nei nomi dei file, che rispecchiano la sequenza. In questo caso, per i file scritti dall'adapter, le proprietà del file system relative alla cronologia (ad esempio, data e ora di creazione del file o data e ora di modifica) non riflettono necessariamente la sequenza di arrivo dei messaggi.

Effetti del recapito ordinato sulle prestazioni

Nota

A partire da BizTalk Server 2020, per le porte di invio dinamiche con recapito ordinato in cui l'ordine non deve essere mantenuto in posizioni in uscita diverse, è possibile ottenere una velocità effettiva maggiore usando più istanze di porta di invio per elaborare i messaggi inviati a posizioni in uscita diverse in parallelo.

Per garantire il recapito ordinato, BizTalk Server deve serializzare l'elaborazione dei messaggi ordinati in vari punti lungo il percorso dei messaggi. Ciò è contrario alle tecniche di scalabilità orizzontale, ad esempio all'utilizzo di più istanze host per l'elaborazione parallela dei messaggi. Quando si utilizza il recapito ordinato, per garantire il recapito ordinato anche le porte configurate per l'esecuzione su più istanze host vengono eseguite su una sola istanza host. Tuttavia, in questa situazione viene garantita la disponibilità elevata perché l'errore di un'istanza host che elabora il recapito ordinato dei messaggi comporta la rielaborazione del messaggio con errori in un'altra istanza host disponibile.

Quando il recapito ordinato è abilitato, l'intervallo di ripetizione dei tentativi predefinito è di 5 minuti. Per migliorare le prestazioni, impostare Intervallo tentativi sul valore minimo, ovvero 1 minuto. La proprietà Retry Interval può accettare un valore pari a zero (0), ma zero (0) non è valido. Il numero di tentativi può essere ottimizzato anche per il numero di tentativi necessari. Ad esempio, se la richiesta deve essere elaborata in <1 minuto e la destinazione della porta di invio è sempre accessibile, impostare entrambi i valori su 1.

Per modificare i valori di ripetizione dei tentativi, passare a Come configurare opzioni avanzate di trasporto per una porta di invio.

Per ulteriori informazioni sul recapito ordinato, vedere i seguenti articoli:

BizTalk: Opzioni di elaborazione dei messaggi ordinati end-to-end

BizTalk: Recapito ordinato

Vedere anche

Recapito ordinato dei messaggi con l'adapter MSMQ
Recapito ordinato dei messaggi con l'adapter MQSeries