Interface IEventSubscriberStorageProvider<TStorageRecord>
interface for implementing a storage provider for an event subscription client app (gRPC client)
Namespace: FastEndpoints
Assembly: FastEndpoints.Messaging.Remote.Core.dll
Syntax
public interface IEventSubscriberStorageProvider<TStorageRecord> where TStorageRecord : IEventStorageRecord
Type Parameters
| Name | Description |
|---|---|
| TStorageRecord | the type of the storage record |
Methods
GetNextBatchAsync(PendingRecordSearchParams<TStorageRecord>)
fetch the next batch of pending event storage records that need to be processed.
Declaration
ValueTask<IEnumerable<TStorageRecord>> GetNextBatchAsync(PendingRecordSearchParams<TStorageRecord> parameters)
Parameters
| Type | Name | Description |
|---|---|---|
| PendingRecordSearchParams<TStorageRecord> | parameters | use these supplied search parameters to find the next batch of event records from your database |
Returns
| Type | Description |
|---|---|
| ValueTask<IEnumerable<TStorageRecord>> |
MarkEventAsCompleteAsync(TStorageRecord, CancellationToken)
mark the event storage record as complete by either replacing the entity on storage with the supplied instance or simply update the IsComplete field to true with a partial update operation.
Declaration
ValueTask MarkEventAsCompleteAsync(TStorageRecord r, CancellationToken ct)
Parameters
| Type | Name | Description |
|---|---|---|
| TStorageRecord | r | the storage record to mark complete |
| CancellationToken | ct | cancellation token |
Returns
| Type | Description |
|---|---|
| ValueTask |
PurgeStaleRecordsAsync(StaleRecordSearchParams<TStorageRecord>)
this method will be called hourly. implement this method to remove stale records (completed or expired) from storage. or instead of removing them, you can move them to some other location (dead-letter-queue maybe) or for inspection by a human. or if you'd like to retry expired events, update the ExpireOn field to a future date/time.
NOTE: the default match criteria is:
r => r.IsComplete || DateTime.UtcNow >= r.ExpireOn
Declaration
ValueTask PurgeStaleRecordsAsync(StaleRecordSearchParams<TStorageRecord> parameters)
Parameters
| Type | Name | Description |
|---|---|---|
| StaleRecordSearchParams<TStorageRecord> | parameters | use these supplied search parameters to find stale records |
Returns
| Type | Description |
|---|---|
| ValueTask |
StoreEventAsync(TStorageRecord, CancellationToken)
store the event storage record however you please. ideally on a nosql database.
Declaration
ValueTask StoreEventAsync(TStorageRecord r, CancellationToken ct)
Parameters
| Type | Name | Description |
|---|---|---|
| TStorageRecord | r | the event storage record which contains the actual event object as well as some metadata |
| CancellationToken | ct | cancellation token |
Returns
| Type | Description |
|---|---|
| ValueTask |