У меня есть опубликованная библиотека, которая использует Akka HTTP под капотом.Я не хочу, чтобы библиотека блокировала завершение приложений, поэтому Я настраиваю библиотеку ActorSystem, чтобы она была демонической .В документах прямо сказано, что библиотеки должны делать это в reference.conf
Если вы пишете библиотеку на основе Akka, сохраните ее конфигурацию в файле reference.conf в корнеФайл JAR.
Когда я использую эту библиотеку в приложении, которое имеет свою собственную систему ActorSystem, я хочу, чтобы эта система по умолчанию имела недемоническое поведение.К сожалению, конфигурация из библиотеки применяется к ActorSystems, созданным в приложении.
Например, этот основной метод, использующий мою библиотеку, немедленно прекратит работу:
object Main {
def main(args: Array[String]): Unit = {
implicit val system = ActorSystem("stellar-channels")
import system.dispatcher
TestNetwork.fund(KeyPair.random)
}
}
Создание ActorSystem
должен был гарантировать, что он будет блокироваться, пока не будет вызван system.terminate()
.Но конфигурация библиотеки также затронула ActorSystem("stellar-channels")
.
Есть ли способ, которым я могу применить конфигурацию библиотеки только к ActorSystem, используемой библиотекой, не вынуждая авторов приложений перенастраивать свои собственные ActorSystems обратно на значения по умолчанию