Akka.Net PersistenceQuery не возвращает все результаты - PullRequest
0 голосов
/ 07 мая 2018

Я использую Akka.Net (v 1.3.2) и пытаюсь запросить журнал событий для всех событий с определенным тегом. Я хочу только те события, которые существуют на момент запроса журнала. Внутри актера у меня есть следующий код:

var readJournal = PersistenceQuery.Get(Context.System).ReadJournalFor<SqlReadJournal>(SqlReadJournal.Identifier);
var stream = readJournal.CurrentEventsByTag("The Tag Name", Offset.NoOffset());
var materializer = ActorMaterializer.Create(Context.System);

stream.RunForeach(envelope =>
{
    // Do some stuff with the EventEnvelope
}, materializer).Wait();

Это успешно запросит журнал событий. Однако проблема в том, что он вернет только первые 100 событий. Мне нужно всех из них, соответствующих запросу!

Вопрос: Как удалить ограничение / фильтр, который существует при запросе журнала событий по имени тега?

Если вам это нужно, вот моя конфигурация akka.persistence:

var config = Akka.Configuration.ConfigurationFactory.ParseString(@"
    akka.persistence {
        journal {
            plugin = ""akka.persistence.journal.sql-server""
            sql-server {
                class = ""Akka.Persistence.SqlServer.Journal.SqlServerJournal, Akka.Persistence.SqlServer""
                connection-string = """ + connectionString + @"""
                schema-name = dbo
                table-name = __akka_EventJournal
                metadata-table-name = __akka_Metadata
                auto-initialize = on
            }
        }

        snapshot-store {
            plugin = ""akka.persistence.snapshot-store.sql-server""
            sql-server {
                class = ""Akka.Persistence.SqlServer.Snapshot.SqlServerSnapshotStore, Akka.Persistence.SqlServer""
                connection-string = """ + connectionString + @"""
                schema-name = dbo
                table-name = __akka_SnapshotStore
                auto-initialize = on
            }
        }
    }"
);

1 Ответ

0 голосов
/ 07 мая 2018

Есть две вещи, которые нужно проверить:

  1. Вы можете установить максимальное количество сообщений, возвращаемых в одном запросе, установив значение akka.persistence.query.journal.sql.max-buffer-size (см .: reference.conf ).
  2. Используйте readJournal.EventsByTag вместо readJournal.CurrentEventsByTag, чтобы получить непрерывный поток событий. Просто имейте в виду, что он не завершится сам по себе, а будет жить в ожидании новых событий. Вы можете остановить это явно, т. Е. Используя KillSwitch .
...