Ich habe versucht, das einfache Beispiel here zu implementieren.Akka.NET Persistenz mit SQL Server funktioniert nicht
Ich habe die erforderlichen Tabellen in SQL Server erstellt, wie im GitHub-Repository und der HOCON-Konfiguration beschrieben. Die Anwendung wird ohne Fehler ausgeführt, es bleibt jedoch nichts erhalten. Ich sah eine frühe Diskussion, wo jemand anderes das gleiche Problem hatte und die Lösung SqlServerPersistence.Init() -Funktion aufrufen sollte, mit einer Notiz, dass dies bald nicht mehr benötigt würde. Und tatsächlich existiert die Methode nicht mehr.
class Program
{
private static void Main(string[] args)
{
try
{
using (var actorSystem = ActorSystem.Create("PersistenceActorSystem"))
{
SqlServerPersistence persistence = SqlServerPersistence.Get(actorSystem);
var actor = actorSystem.ActorOf(Props.Create<ParentActor>(), "ParentActor");
actorSystem.WhenTerminated.Wait();
Console.WriteLine("Actor system shutdown...");
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
}
public class ParentActor : ReceiveActor
{
public ParentActor()
{
var actor = Context.ActorOf(Props.Create<PersistentChildActor>(), "PersistentChildActor");
actor.Tell("Message 1");
actor.Tell("Message 2");
actor.Tell(new PersistentChildActor.GetMessages());
Receive<IReadOnlyList<string>>(messages =>
{
Console.WriteLine("Received messages...");
foreach (var message in messages)
{
Console.WriteLine(message);
}
Context.System.Terminate();
});
}
}
public class PersistentChildActor : ReceivePersistentActor
{
public class GetMessages {}
private List<string> _messages = new List<string>();
public override string PersistenceId
{
get
{
return "HardCoded";
}
}
public PersistentChildActor()
{
// recover
Recover<string>(message => _messages.Add(message));
// commands
Command<string>(message => Persist(message, s =>
{
_messages.Add(message); //add msg to in-memory event store after persisting
}));
Command<GetMessages>(get =>
{
IReadOnlyList<string> messages = new List<string>(_messages);
Sender.Tell(messages);
});
}
}
Ich verwende Akka 1.0.8 mit Persistence 1.0.8.25 und Persistence.SqlServer 1.0.6.3.
Hocon Config
akka {
akka.persistence{
journal {
plugin = "akka.persistence.journal.sql-server"
sql-server {
class = "Akka.Persistence.SqlServer.Journal.SqlServerJournal, Akka.Persistence.SqlServer"
connection-string = "Data Source=USER-PC\\SQLEXPRESS;Initial Catalog=AkkaPersistenceDemo;Integrated Security=True;"
schema-name = dbo
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 = "Data Source=USER-PC\\SQLEXPRESS;Initial Catalog=AkkaPersistenceDemo;Integrated Security=True;"
schema-name = dbo
auto-initialize = on
}
}
}
}
Könnten Sie Ihre aktuelle Hocon Config hinzufügen? Sie haben wahrscheinlich einen Fehler drin. – Danthar