Supporto per la ricezione di messaggi modificati dai dati basati sul polling nel database Oracle
L'adattatore database DiOracle consente ai programmi client di ricevere messaggi dal database Oracle informandoli delle modifiche ai dati archiviati in un database Oracle. L'adapter Oracle Database supporta la ricezione di messaggi "basati sul polling" in cui l'adapter esegue una query SELECT, una stored procedure, una funzione o una funzione all'interno di un pacchetto, recupera i dati e fornisce il risultato al client a intervalli regolari di tempo. Per abilitare questa operazione, l'adapter Di database Oracle espone un'operazione POLLINGSTMT. Inoltre, tutte le stored procedure, le funzioni e le procedure e le funzioni all'interno dei pacchetti vengono esposte come operazioni in ingresso per il polling.
L'adapter offre due modi per eseguire il polling del database Oracle:
Uso delle istruzioni SELECT. È possibile specificare un'istruzione SELECT semplice per eseguire il polling delle tabelle e delle visualizzazioni nel database Oracle. L'adapter esegue l'istruzione SELECT a intervalli specificati e restituisce il risultato ai client dell'adapter.
Uso di stored procedure, funzioni o funzioni all'interno di un pacchetto. È possibile specificare una stored procedure, una funzione o una funzione all'interno di un pacchetto per eseguire il polling del database Oracle. L'adapter esegue il messaggio di richiesta a intervalli specificati e restituisce il risultato ai client dell'adapter.
Flusso di lavoro dell'operazione di polling
Un'operazione di polling tipica tramite l'adapter Oracle Database implica quanto segue:
I client della scheda devono specificare Polling come operazione in ingresso nella proprietà di associazione InboundOperationType . Il valore predefinito per questa proprietà di associazione è Polling.
I client della scheda devono specificare un'istruzione SELECT per la proprietà di associazione PolledDataAvailableStatement per determinare se sono disponibili dati per il polling. Durante l'esecuzione di questa istruzione, se la prima colonna della prima riga del set di risultati restituita contiene un valore intero positivo, è disponibile la data per il polling. Per impostazione predefinita, il valore di questa proprietà di associazione è impostato su
Select 1 FROM DUAL
, che implica che l'adapter deve continuare a eseguire il polling indipendentemente dal fatto che la tabella sottoposta a polling abbia dati o meno.I client della scheda devono specificare un intervallo di polling per la proprietà di associazione PollingInterval per definire l'intervallo in secondi in cui viene eseguita l'istruzione specificata nella proprietà di associazione PolledDataAvailableStatement . Alla fine di ogni intervallo di polling, viene eseguita l'istruzione disponibile per i dati con polling e viene restituito il set di risultati.
I client dell'adapter devono specificare un'istruzione SELECT o una stored procedure per la proprietà di associazione PollingStatement .
Se si vuole eseguire il polling di una tabella o di una vista, è necessario specificare una query SELECT in questa proprietà di associazione.
Se si vuole eseguire il polling usando una stored procedure, una funzione o una funzione all'interno di un pacchetto, è necessario specificare l'intero messaggio di richiesta per l'operazione rispettiva in questa proprietà di associazione.
L'istruzione nella proprietà di associazione PollingStatement viene eseguita solo se sono disponibili dati per il polling, determinato dalla proprietà di associazione PolledDataAvailableStatement nel passaggio 1.
I client della scheda devono specificare un'azione per l'operazione di polling nella proprietà di associazione PollingAction . L'azione di polling per un'operazione specifica viene determinata dai metadati generati per l'operazione usando il componente aggiuntivo Del servizio adapter.
Nota
Se si esegue il polling di una tabella o di una vista usando un'istruzione SELECT nella proprietà di associazione PollingStatement , non è necessario specificare alcun valore per la proprietà di associazione PollingAction . Il valore predefinito, Null, viene passato in questo caso.
I client della scheda possono usare la proprietà di associazione PollWhileDataFound per ignorare l'intervallo di polling e eseguire continuamente il polling dei dati, come e quando disponibili.
Importante
Se si imposta il valore della proprietà di associazione PollWhileDataFound su True, i client dell'adapter eseguono il polling continuo dei dati da Oracle e nel processo aprono e chiudino le connessioni al database Oracle in un ciclo. Poiché la frequenza con cui le connessioni vengono aperte da ODP.NET è maggiore delle connessioni chiuse, le connessioni vengono esaurite dopo qualche tempo e viene generata un'eccezione. In seguito, assicurarsi che il valore di UseOracleConnectionPool sia impostato su True e che un valore appropriato sia indicato nella proprietà di associazione IncrPoolSize per controllare il numero di connessioni che possono essere aperte dai client dell'adapter.
I client della scheda possono specificare un'istruzione post-poll, un blocco Oracle PL/SQL per la proprietà di associazione PostPollStatement . L'istruzione specificata in questa proprietà di associazione viene eseguita dopo l'esecuzione dell'istruzione specificata nella proprietà di associazione PollingStatement .
L'adapter esegue il wrapping dell'istruzione polling e l'istruzione post-poll in una transazione e il valore del timeout delle transazioni viene impostato come valore specificato per la proprietà di associazione PollingInterval . Pertanto, è fondamentale specificare un valore di timeout maggiore o uguale al tempo necessario per elaborare il messaggio in ingresso e inviare una risposta. Se il tempo impiegato dal programma client per utilizzare il messaggio o eseguire la query post-poll è maggiore del valore del timeout, la transazione viene eseguito il rollback. Se il tempo impiegato è minore del valore di timeout, l'adapter esegue il commit della transazione e "dorme" per il tempo rimanente nel polling prima di eseguire il polling successivo.
L'adapter elimina le risposte di polling vuote provenienti dal database Oracle.
Differenze tra polling e notifica
Anche se il polling e la notifica sono entrambe operazioni in ingresso e informano i client dell'adapter sulle modifiche ai dati nel database Oracle, la tabella seguente illustra alcune differenze tra i due. Le differenze seguenti consentono di decidere un'operazione a seconda dei requisiti:
Polling | Notifica |
---|---|
Il polling è supportato per tutte le versioni del database Oracle supportate dall'adapter Oracle Database. | La notifica è supportata solo per le versioni del database Oracle 10.2 e versioni successive. |
È possibile configurare l'intervallo di polling per controllare i dati disponibili per il polling a intervalli regolari o immediatamente come e quando i dati sono disponibili. Mancia: Il polling può offrire una maggiore velocità effettiva negli scenari in cui le modifiche ai dati vengono eseguite continuamente e non si vuole ricevere una notifica di ogni modifica come e quando si verifica. Si specifica invece un intervallo di polling dopo il quale si desidera ricevere una notifica di tutte le modifiche apportate dall'ultima notifica di modifica. | La notifica di modifica dei dati è sempre istantanea. |
Il polling viene avviato dall'adapter. L'adapter esegue un'istruzione SQL per verificare se i dati sono disponibili per il polling e quindi avvia il polling eseguendo l'istruzione di polling se alcuni dati sono disponibili per il polling. | La notifica viene avviata dal database Oracle. L'istruzione di notifica rilasciata dall'adapter indica solo al database di avviare la notifica nel caso in cui si verifichi una modifica nel set di risultati dell'istruzione. La notifica è una funzionalità del database Oracle. |
È possibile usare l'istruzione di polling per leggere o aggiornare i dati nel database Oracle. | È possibile usare l'istruzione di notifica per leggere solo i dati in un database Oracle. |
Il polling informa i dati effettivi modificati. | La notifica informa solo sul tipo di modifica nei dati, ad esempio Insert, Update e Delete. |
Per altre informazioni:
Come l'adapter supporta la ricezione di messaggi basati sul polling dal database Oracle, vedere Ricevere messaggi modificati dei dati basati sul polling.
Ricezione di messaggi basati sul polling dal database Oracle usando BizTalk Server, vedere Richiamare funzioni e procedure nel database Oracle usando Biztalk Server.
Ricezione di messaggi basati sul polling dal database Oracle tramite il modello di servizio WCF, vedere Ricevere messaggi modificati in base al polling da SQL Server tramite il modello di canale WCF.
Ricezione di messaggi basati sul polling dal database Oracle tramite il modello di canale WCF, vedere Ricevere messaggi modificati in base al polling da SQL Server tramite il modello di canale WCF.
Struttura dei messaggi e azioni SOAP per eseguire una query di polling, vedere Schemi di messaggio per le operazioni di polling.