Akka.Persistence.Sql.Common.Journal.JournalDbEngine.ReplayMessagesAsync C# (CSharp) Метод

ReplayMessagesAsync() публичный Метод

Asynchronously replays all requested messages related to provided persistenceId, using provided sequence ranges (inclusive) with max number of messages replayed (counting from the beginning). Replay callback is invoked for each replayed message.
public ReplayMessagesAsync ( string persistenceId, long fromSequenceNr, long toSequenceNr, long max, IActorRef sender, Action recoveryCallback ) : Task
persistenceId string Identifier of persistent messages stream to be replayed.
fromSequenceNr long Lower inclusive sequence number bound. Unbound by default.
toSequenceNr long Upper inclusive sequence number bound. Unbound by default.
max long Maximum number of messages to be replayed. Unbound by default.
sender IActorRef
recoveryCallback Action Action invoked for each replayed message.
Результат Task
        public async Task ReplayMessagesAsync(string persistenceId, long fromSequenceNr, long toSequenceNr, long max, IActorRef sender, Action<IPersistentRepresentation> recoveryCallback)
        {
            using (var connection = CreateDbConnection())
            {
                await connection.OpenAsync();

                var sqlCommand = QueryBuilder.SelectMessages(persistenceId, fromSequenceNr, toSequenceNr, max);
                CompleteCommand(sqlCommand, connection);
                
                var reader = await sqlCommand.ExecuteReaderAsync(_pendingRequestsCancellation.Token);

                try
                {
                    while (reader.Read())
                    {
                        var persistent = QueryMapper.Map(reader, sender);
                        if (persistent != null)
                            recoveryCallback(persistent);
                    }
                }
                finally
                {
                    reader.Close();
                }
            }
        }

Usage Example

Пример #1
0
 public override Task ReplayMessagesAsync(IActorContext context, string persistenceId, long fromSequenceNr, long toSequenceNr, long max, Action <IPersistentRepresentation> recoveryCallback)
 {
     return(DbEngine.ReplayMessagesAsync(persistenceId, fromSequenceNr, toSequenceNr, max, context.Sender, recoveryCallback));
 }