Метод не найден: Akka.Шаблон.Прерыватель цепи.Создать

#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 — обновление до этой версии должно решить вашу проблему.