Как настроить диспетчер / пул потоков для akka http - PullRequest
0 голосов
/ 08 сентября 2018

У меня вопрос по поводу akka-http. Я разработал сервис, который раскручивает разных участников, и помимо некоторых других задач некоторые из них также выполняют внешние вызовы http для разных конечных точек через функцию akka-http Http (). SingleRequest. Я хочу изолировать вызовы Http через отдельный пул / конфигурацию диспетчера, но я не могу найти способ определить диспетчер. Для других актеров я могу определить это с помощью метода .withDispatcher (). Насколько я знаю, Akka-http работает через потоки akka (через материализационный актер), но как я могу определить диспетчер для функции Http (). SingleRequest?

Заранее спасибо!

1 Ответ

0 голосов
/ 08 сентября 2018

вы можете указать своего диспетчера в файле настроек. Для получения дополнительной информации, пожалуйста, прочитайте документацию по данной ссылке. Диспетчеры реализуют интерфейс ExecutionContext и, таким образом, могут использоваться для запуска будущих вызовов и т. Д.

фактически после определения диспетчера вы можете использовать этот диспетчер для актеров, которые выполняют вызовы внешнего API, и передать им контекст выполнения через диспетчера.

https://doc.akka.io/docs/akka/2.5/dispatchers.html

имеет такую ​​структуру:

my-dispatcher {
  # Dispatcher is the name of the event-based dispatcher
  type = Dispatcher
  # What kind of ExecutionService to use
  executor = "fork-join-executor"
  # Configuration for the fork join pool
  fork-join-executor {
    # Min number of threads to cap factor-based parallelism number to
    parallelism-min = 2
    # Parallelism (threads) ... ceil(available processors * factor)
    parallelism-factor = 2.0
    # Max number of threads to cap factor-based parallelism number to
    parallelism-max = 10
  }
  # Throughput defines the maximum number of messages to be
  # processed per actor before the thread jumps to the next actor.
  # Set to 1 for as fair as possible.
  throughput = 100
}
...