#akka.net #akka.net-persistence
#akka.net #akka.net-постоянство
Вопрос:
Я получаю вышеуказанную ошибку, когда пытаюсь создать сохраняющегося субъекта с сохранением SQL server.
РЕДАКТИРОВАТЬ: что странно, когда я клонирую репозитории akka и akka persistence sql server и подключаю их, а затем вместо этого использую пакеты nuget, которые работают так, как ожидалось. Я использую следующие версии: «Akka» Version =»1.4.11″ «Akka.Сохранение.SQLServer» Версия =»1.4.10″
akka {
persistence{
journal {
plugin = "akka.persistence.journal.sql-server"
sql-server {
# qualified type name of the SQL Server persistence journal actor
class = "Akka.Persistence.SqlServer.Journal.SqlServerJournal, Akka.Persistence.SqlServer"
# dispatcher used to drive journal actor
plugin-dispatcher = "akka.actor.default-dispatcher"
# connection string used for database access
connection-string = "my con string"
# default SQL commands timeout
connection-timeout = 30s
# SQL server schema name to table corresponding with persistent journal
schema-name = dbo
# SQL server table corresponding with persistent journal
table-name = EventJournal
# should corresponding journal table be initialized automatically
auto-initialize = on
# timestamp provider used for generation of journal entries timestamps
timestamp-provider = "Akka.Persistence.Sql.Common.Journal.DefaultTimestampProvider, Akka.Persistence.Sql.Common"
# metadata table
metadata-table-name = Metadata
# Recommended: change default circuit breaker settings
# By uncommenting below and using Connection Timeout Command Timeout
# circuit-breaker.call-timeout=30s
}
}
snapshot-store {
plugin = "akka.persistence.snapshot-store.sql-server"
sql-server {
# qualified type name of the SQL Server persistence journal actor
class = "my con string"
# dispatcher used to drive journal actor
plugin-dispatcher = "akka.actor.default-dispatcher"
# connection string used for database access
connection-string = "xyz"
# default SQL commands timeout
connection-timeout = 30s
# SQL server schema name to table corresponding with persistent journal
schema-name = dbo
# SQL server table corresponding with persistent journal
table-name = SnapshotStore
# should corresponding journal table be initialized automatically
auto-initialize = on
# Recommended: change default circuit breaker settings
# By uncommenting below and using Connection Timeout Command Timeout
# circuit-breaker.call-timeout=30s
}
}
}
}
Мой координатор пытается создать субъекта для идентификатора сообщения, но он завершается с ошибкой:
Ошибка при создании экземпляра субъекта типа Akka.Сохранение.SQLServer.Journal.SqlServerJournal с 1 аргументами: ( класс : «Akka.Сохранение.SQLServer.Journal.SqlServerJournal, Akka.Сохранение.SQLServer» плагин-диспетчер : akka.актер.соединение диспетчера по умолчанию-строка : соединение «xyz» -тайм-аут : 30 секунд схема-имя : таблица dbo-имя : журнал событий автоинициализация : по метке времени-поставщик : «Akka.Постоянство.Sql.Common.Журнал.DefaultTimestampProvider, Akka.Сохранение.Sql.Общие» метаданные-имя таблицы : Последовательный доступ к метаданным : включен ) Причина:: Akka.Актер.Исключение ActorInitializationException: исключение во время создания —> Система.Исключение TypeLoadException: ошибка при создании экземпляра субъекта типа Akka.Сохранение.SQLServer.Journal.SqlServerJournal с 1 аргументами: ( класс : «Akka.Сохранение.SQLServer.Journal.SqlServerJournal, Akka.Сохранение.SQLServer» плагин-диспетчер : akka.актер.соединение диспетчера по умолчанию-строка : соединение «xyz» -тайм-аут : 30 секунд схема-имя : таблица dbo-имя : журнал событий автоинициализация : по метке времени-поставщик : «Akka.Постоянство.Sql.Common.Журнал.DefaultTimestampProvider, Akka.Сохранение.Sql.Common» метаданные-имя таблицы: метаданные последовательный доступ: вкл. ) —> Система.Отражение.TargetInvocationException: исключение было вызвано целью вызова. —> System.MissingMethodException: метод не найден: ‘Аннулировать акку.Шаблон.circuitBreaker..ctor(Int32, System.Временной интервал, система.Промежуток времени)’. в Akka.Сохранение.Журнал.AsyncWriteJournal..ctor() в Akka.Постоянство.Sql.Common.Journal.SqlJournal..ctor(Config journalConfig) в Akka.Сохранение.SQLServer.Journal.SqlServerJournal..ctor(Config journalConfig)
public class MyCoordinatorActor : ReceiveActor
{
public MyCoordinatorActor ()
{
Receive<MyMessage>(message =>
{
var childName = message.Id.ToString();
var child = Context.Child(childName);
if (child.IsNobody())
{
var props = Props.Create(() => new AuctionActor(childName));
child = Context.ActorOf(props, childName);
}
child.Tell(message);
});
}
}
public class MyActor : ReceivePersistentActor
{
private decimal _currentValue;
public override string PersistenceId { get; }
public AuctionActor(string Id)
{
PersistenceId = Id;
Command<BidMessage>(message =>
{
if (message.Value > _currentValue)
{
Persist(message, mssage =>
{
_currentValue = mssage.Value;
});
}
else
{
}
});
}
}
Ответ №1:
Вы столкнулись с этой проблемой, которая была результатом того, что мы изменили некоторые API внутри CircuitBreaker
как часть Akka.NET v1.4.11: https://github.com/akkadotnet/Akka .Сохранение.SQLServer/проблемы /177
Мы только что нажали Akka.Сохранение.SQLServer 1.4.11 пару минут назад: https://github.com/akkadotnet/Akka .Сохранение.SQLServer / releases / tag / 1.4.11 — обновление до этой версии должно решить вашу проблему.