PrimaryBasedLogViewAdaptor<TLogView,TLogEntry,TSubmissionEntry> 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
建構以循序讀取和寫入主要複本為基礎的記錄檢視配接器一般範本。 我們使用此方式來建構各種不同的記錄一致性提供者,這些提供者都遵循相同的基本模式, (讀取和寫入主要複本的最新檢視,並在寫入) 之後傳送通知。
請注意,記錄本身是暫時性的,也就是實際上不會儲存至儲存體 - 只有最新的檢視和部分中繼資料 (記錄位置,而寫入旗標) 儲存在主要複本中。 當然,只能使用粒紋排程器 (交錯此配接器的呼叫,當然) 。
子類別會覆寫 ReadAsync 和 WriteAsync,以讀取/寫入主要複本。 對主要複本的呼叫會序列化,亦即永遠不會交錯。
public abstract class PrimaryBasedLogViewAdaptor<TLogView,TLogEntry,TSubmissionEntry> : Orleans.LogConsistency.ILogViewAdaptor<TLogView,TLogEntry>, Orleans.LogConsistency.ILogViewRead<TLogView,TLogEntry>, Orleans.LogConsistency.ILogViewUpdate<TLogEntry> where TLogView : class, new() where TLogEntry : class where TSubmissionEntry : SubmissionEntry<TLogEntry>
public abstract class PrimaryBasedLogViewAdaptor<TLogView,TLogEntry,TSubmissionEntry> : Orleans.EventSourcing.ILogViewAdaptor<TLogView,TLogEntry>, Orleans.EventSourcing.ILogViewRead<TLogView,TLogEntry>, Orleans.EventSourcing.ILogViewUpdate<TLogEntry> where TLogView : class, new() where TLogEntry : class where TSubmissionEntry : SubmissionEntry<TLogEntry>
type PrimaryBasedLogViewAdaptor<'LogView, 'LogEntry, 'SubmissionEntry (requires 'LogView : null and 'LogView : (new : unit -> 'LogView) and 'LogEntry : null and 'SubmissionEntry :> SubmissionEntry<'LogEntry>)> = class
interface ILogViewAdaptor<'LogView, 'LogEntry (requires 'LogView : null and 'LogView : (new : unit -> 'LogView) and 'LogEntry : null)>
interface ILogViewRead<'LogView, 'LogEntry (requires 'LogView : null and 'LogView : (new : unit -> 'LogView) and 'LogEntry : null)>
interface ILogViewUpdate<'LogEntry (requires 'LogEntry : null)>
interface ILogConsistencyDiagnostics
Public MustInherit Class PrimaryBasedLogViewAdaptor(Of TLogView, TLogEntry, TSubmissionEntry)
Implements ILogViewAdaptor(Of TLogView, TLogEntry), ILogViewRead(Of TLogView, TLogEntry), ILogViewUpdate(Of TLogEntry)
類型參數
- TLogView
記錄的使用者定義檢視
- TLogEntry
記錄專案的型別
- TSubmissionEntry
儲存在擱置佇列中的提交專案類型
- 繼承
-
PrimaryBasedLogViewAdaptor<TLogView,TLogEntry,TSubmissionEntry>
- 實作
建構函式
欄位
LastPrimaryIssue |
儲存讀取或更新主要複本時發生的最後一個問題。 如果成功,則為 null。 |
stats |
建構以循序讀取和寫入主要複本為基礎的記錄檢視配接器一般範本。 我們使用此方式來建構各種不同的記錄一致性提供者,這些提供者都遵循相同的基本模式, (讀取和寫入主要複本的最新檢視,並在寫入) 之後傳送通知。 請注意,記錄本身是暫時性的,也就是實際上不會儲存至儲存體 - 只有最新的檢視和部分中繼資料 (記錄位置,而寫入旗標) 儲存在主要複本中。 當然,只能使用粒紋排程器 (交錯此配接器的呼叫,當然) 。 子類別會覆寫 ReadAsync 和 WriteAsync,以讀取/寫入主要複本。 對主要複本的呼叫會序列化,亦即永遠不會交錯。 |
屬性
Configuration |
這個粒紋實例目前的多重叢集組態。 |
ConfirmedVersion |
記錄檔已確認前置詞的長度 |
ConfirmedView |
記錄的確認檢視 (僅反映已確認的專案) |
Host |
使用此配接器的粒紋。 |
Services |
在不同叢集中的粒紋實例之間實作通知所需的執行時間服務。 |
SupportSubmissions |
此叢集是否支援提交更新 |
TentativeView |
記錄的本機暫訂檢視 (反映已確認和未確認的專案) |
UnconfirmedSuffix |
尚未出現在已確認前置詞中之提交的專案清單。 |
UnresolvedConnectionIssues |
會傳回尚未還原之所有連線健康情況問題的清單。 例如,與主要叢集通訊或嘗試通知其他叢集時,觀察到這類問題。 |
方法
BroadcastNotification(INotificationMessage, String) |
將通知訊息傳送至所有遠端實例 |
ConfirmSubmittedEntries() |
確認所有提交的專案。 等到先前提交的所有專案都出現在記錄檔的已確認前置詞中。 |
CopyTentativeState() |
建構以循序讀取和寫入主要複本為基礎的記錄檢視配接器一般範本。 我們使用此方式來建構各種不同的記錄一致性提供者,這些提供者都遵循相同的基本模式, (讀取和寫入主要複本的最新檢視,並在寫入) 之後傳送通知。 請注意,記錄本身是暫時性的,也就是實際上不會儲存至儲存體 - 只有最新的檢視和部分中繼資料 (記錄位置,而寫入旗標) 儲存在主要複本中。 當然,只能使用粒紋排程器 (交錯此配接器的呼叫,當然) 。 子類別會覆寫 ReadAsync 和 WriteAsync,以讀取/寫入主要複本。 對主要複本的呼叫會序列化,亦即永遠不會交錯。 |
DisableStatsCollection() |
停用統計資料集合 |
EnableStatsCollection() |
方法為虛擬,因此子類別可以新增自己的事件 |
EnsureClusterJoinedAsync() |
封鎖直到此叢集加入多叢集為止。 |
GetCaughtUpWithConfigurationAsync(DateTime) |
等候此叢集收到至少與時間戳記一樣新的設定 |
GetConfirmedVersion() |
已快取全域狀態的讀取版本。 |
GetCurrentBatchOfUpdates() |
建構以循序讀取和寫入主要複本為基礎的記錄檢視配接器一般範本。 我們使用此方式來建構各種不同的記錄一致性提供者,這些提供者都遵循相同的基本模式, (讀取和寫入主要複本的最新檢視,並在寫入) 之後傳送通知。 請注意,記錄本身是暫時性的,也就是實際上不會儲存至儲存體 - 只有最新的檢視和部分中繼資料 (記錄位置,而寫入旗標) 儲存在主要複本中。 當然,只能使用粒紋排程器 (交錯此配接器的呼叫,當然) 。 子類別會覆寫 ReadAsync 和 WriteAsync,以讀取/寫入主要複本。 對主要複本的呼叫會序列化,亦即永遠不會交錯。 |
GetNumberPendingUpdates() |
建構以循序讀取和寫入主要複本為基礎的記錄檢視配接器一般範本。 我們使用此方式來建構各種不同的記錄一致性提供者,這些提供者都遵循相同的基本模式, (讀取和寫入主要複本的最新檢視,並在寫入) 之後傳送通知。 請注意,記錄本身是暫時性的,也就是實際上不會儲存至儲存體 - 只有最新的檢視和部分中繼資料 (記錄位置,而寫入旗標) 儲存在主要複本中。 當然,只能使用粒紋排程器 (交錯此配接器的呼叫,當然) 。 子類別會覆寫 ReadAsync 和 WriteAsync,以讀取/寫入主要複本。 對主要複本的呼叫會序列化,亦即永遠不會交錯。 |
GetStats() |
取得狀態 |
InitializeConfirmedView(TLogView) |
設定確認檢視 (空白記錄檔檢視) |
IsMyClusterJoined() |
建構以循序讀取和寫入主要複本為基礎的記錄檢視配接器一般範本。 我們使用此方式來建構各種不同的記錄一致性提供者,這些提供者都遵循相同的基本模式, (讀取和寫入主要複本的最新檢視,並在寫入) 之後傳送通知。 請注意,記錄本身是暫時性的,也就是實際上不會儲存至儲存體 - 只有最新的檢視和部分中繼資料 (記錄位置,而寫入旗標) 儲存在主要複本中。 當然,只能使用粒紋排程器 (交錯此配接器的呼叫,當然) 。 子類別會覆寫 ReadAsync 和 WriteAsync,以讀取/寫入主要複本。 對主要複本的呼叫會序列化,亦即永遠不會交錯。 |
LastConfirmedView() |
讀取快取的全域狀態。 |
MakeSubmissionEntry(TLogEntry) |
為提交的記錄專案建立提交專案。 使用類型參數,讓我們可以將通訊協定特定資訊新增至這個類別。 |
Merge(INotificationMessage, INotificationMessage) |
合併兩個通知訊息,以進行批次處理。 覆寫以處理通知子類型。 |
NotifyPromises(Int32, Boolean) |
傳送失敗通知 |
OnConfigurationChange(MultiClusterConfiguration) |
當多重叢集的設定變更時呼叫。 |
OnMessageReceived(ILogConsistencyProtocolMessage) |
處理通訊協定訊息。 |
OnMessageReceived(ILogConsistencyProtocolMessage) |
處理通訊協定訊息。 |
OnMultiClusterConfigurationChange(MultiClusterConfiguration) |
當組態變更時,由 MultiClusterOracle 呼叫。 |
OnNotificationReceived(INotificationMessage) |
處理通知訊息。 覆寫此專案以處理通知子類型。 |
OnProtocolMessageReceived(ILogConsistencyProtocolMessage) |
從網路呼叫 |
OnProtocolMessageReceived(ILogConsistencyProtocolMessage) |
從網路呼叫 |
PostOnActivate() |
建構以循序讀取和寫入主要複本為基礎的記錄檢視配接器一般範本。 我們使用此方式來建構各種不同的記錄一致性提供者,這些提供者都遵循相同的基本模式, (讀取和寫入主要複本的最新檢視,並在寫入) 之後傳送通知。 請注意,記錄本身是暫時性的,也就是實際上不會儲存至儲存體 - 只有最新的檢視和部分中繼資料 (記錄位置,而寫入旗標) 儲存在主要複本中。 當然,只能使用粒紋排程器 (交錯此配接器的呼叫,當然) 。 子類別會覆寫 ReadAsync 和 WriteAsync,以讀取/寫入主要複本。 對主要複本的呼叫會序列化,亦即永遠不會交錯。 |
PostOnDeactivate() |
在停用期間于使用者定義 OnDeactivateAsync() 之後呼叫。 |
PreOnActivate() |
在啟用期間呼叫,在使用者定義 OnActivateAsync() 之前呼叫。 |
ProcessNotifications() |
處理背景工作週期期間的預存通知。 覆寫以處理通知子類型。 |
ReadAsync() |
讀取最新的主要狀態。 必須封鎖/重試,直到成功為止。 不應該擲回例外狀況,但會將例外狀況記錄在 LastPrimaryIssue |
RemoveStaleConditionalUpdates() |
流覽更新並移除所有已失敗的條件式更新 |
RetrieveLogSegment(Int32, Int32) |
建構以循序讀取和寫入主要複本為基礎的記錄檢視配接器一般範本。 我們使用此方式來建構各種不同的記錄一致性提供者,這些提供者都遵循相同的基本模式, (讀取和寫入主要複本的最新檢視,並在寫入) 之後傳送通知。 請注意,記錄本身是暫時性的,也就是實際上不會儲存至儲存體 - 只有最新的檢視和部分中繼資料 (記錄位置,而寫入旗標) 儲存在主要複本中。 當然,只能使用粒紋排程器 (交錯此配接器的呼叫,當然) 。 子類別會覆寫 ReadAsync 和 WriteAsync,以讀取/寫入主要複本。 對主要複本的呼叫會序列化,亦即永遠不會交錯。 |
Submit(TLogEntry) |
提交要附加至全域記錄檔的單一記錄專案,不論是在目前或稍後的任何位置。 |
SubmitRange(IEnumerable<TLogEntry>) |
提交一系列記錄專案,以不可部分完成的方式附加至全域記錄檔,不論是在目前或稍後的任何位置。 |
Synchronize() |
取得最新的記錄檢視,並確認所有提交的專案。 等候所有先前提交的專案出現在記錄檔的已確認前置詞中,並強制重新整理已確認的前置詞。 |
TryAppend(TLogEntry) |
嘗試在記錄檔的目前位置附加單一記錄專案。 |
TryAppendRange(IEnumerable<TLogEntry>) |
嘗試在記錄檔的目前位置上,以不可部分完成的方式附加記錄專案範圍。 |
WriteAsync() |
將暫止專案套用至主要複本。 必須封鎖/重試,直到成功為止。 不應該擲回例外狀況,但會將例外狀況記錄在 LastPrimaryIssue |