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

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

Asynchronously writes all persistent messages inside SQL Server database. Specific table used for message persistence may be defined through configuration within 'akka.persistence.journal.sql-server' scope with 'schema-name' and 'table-name' keys.
public WriteMessagesAsync ( IEnumerable messages ) : Task>
messages IEnumerable
Результат Task>
        public async Task<IImmutableList<Exception>> WriteMessagesAsync(IEnumerable<AtomicWrite> messages)
        {
            var writeTasks = messages.Select(async message =>
            {
                using (var connection = CreateDbConnection())
                {
                    await connection.OpenAsync();

                    var persistentMessages = ((IImmutableList<IPersistentRepresentation>) message.Payload).ToArray();
                    var sqlCommand = QueryBuilder.InsertBatchMessages(persistentMessages);
                    CompleteCommand(sqlCommand, connection);

                    var journalEntries = persistentMessages.Select(ToJournalEntry).ToList();
                    await InsertInTransactionAsync(sqlCommand, journalEntries);
                }
            });

            return await Task<IImmutableList<Exception>>
                .Factory
                .ContinueWhenAll(writeTasks.ToArray(),
                    tasks => tasks.Select(t => t.IsFaulted ? TryUnwrapException(t.Exception) : null).ToImmutableList());
        }

Usage Example

Пример #1
0
 protected override Task <IImmutableList <Exception> > WriteMessagesAsync(IEnumerable <AtomicWrite> messages)
 {
     return(DbEngine.WriteMessagesAsync(messages));
 }
All Usage Examples Of Akka.Persistence.Sql.Common.Journal.JournalDbEngine::WriteMessagesAsync