Akka.Net PersistenceQuery 未返回所有结果
Akka.Net PersistenceQuery not returning all results
我正在使用 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();
这将成功查询事件日志。但是,问题是它只会 return 前 100 个事件。我需要 所有 个匹配查询的对象!
问题:如何删除按标签名称查询事件日志时存在的limit/filter?
如果你需要,这是我的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
}
}
}"
);
有两件事需要检查:
- 您可以通过设置
akka.persistence.query.journal.sql.max-buffer-size
值来设置一次查询中返回的最大消息数(参见:reference.conf)。
- 使用
readJournal.EventsByTag
而不是 readJournal.CurrentEventsByTag
以获得连续的事件流。请记住,它不会自行完成,而是会继续等待新事件的到来。您可以明确停止它,即使用 KillSwitch.
我正在使用 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();
这将成功查询事件日志。但是,问题是它只会 return 前 100 个事件。我需要 所有 个匹配查询的对象!
问题:如何删除按标签名称查询事件日志时存在的limit/filter?
如果你需要,这是我的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
}
}
}"
);
有两件事需要检查:
- 您可以通过设置
akka.persistence.query.journal.sql.max-buffer-size
值来设置一次查询中返回的最大消息数(参见:reference.conf)。 - 使用
readJournal.EventsByTag
而不是readJournal.CurrentEventsByTag
以获得连续的事件流。请记住,它不会自行完成,而是会继续等待新事件的到来。您可以明确停止它,即使用 KillSwitch.