Akka.Net PersistenceQuery没有返回所有结果

时间:2018-05-07 15:30:34

标签: akka-stream akka.net

我正在使用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 :(得分:2)

有两件事要检查:

  1. 您可以通过设置akka.persistence.query.journal.sql.max-buffer-size值来设置在一个查询中返回的最大邮件数(请参阅:reference.conf)。
  2. 使用readJournal.EventsByTag代替readJournal.CurrentEventsByTag来获取连续的事件流。请记住,它不会自行完成,但会继续等待新事件到来。您可以明确地停止它,即使用KillSwitch