2014-09-17 3 views
0

У меня есть последовательный хеширующий маршрутизатор (scala/akka), который назначает конкретный тип сообщения a конкретному набору участников 1-го запроса для запроса запроса A и тип сообщения b конкретному набор участников по запросу B ... и т. д. Вопрос: как я могу подобрать набор актеров A к своей собственной теме A, а набор актеров B в свою собственную нить B?Как назначить потоки для каждого участника запроса в Akka

Надеюсь, что набор актеров A не блокирует набор актеров B и B не блокирует A. К сожалению, мой диспетчер Akka испытывает недостаток, как и мой многопоточный опыт. Благодарю.

ответ

2

Вам нужно настроить диспетчер для актеров типа А и Б.

См http://doc.akka.io/docs/akka/snapshot/scala/dispatchers.html полной информации, но один из примеров этого является, чтобы сделать это, указав конкретную Отправку при создании своих актеров. Просто добавьте withDispatcher("dispatcher-actortype-A") к объекту реквизита в вашем актерском, то в файле конфигурация AKKA, добавьте:

dispatcher-actortype-A { 
    # Dispatcher is the name of the event-based dispatcher 
    type = Dispatcher 
    # What kind of ExecutionService to use 
    executor = "thread-pool-executor" 
    # Configuration for the thread pool 
    thread-pool-executor { 
    # minimum number of threads to cap factor-based core number to 
    core-pool-size-min = 2 
    # No of core threads ... ceil(available processors * factor) 
    core-pool-size-factor = 2.0 
    # maximum number of threads to cap factor-based number to 
    core-pool-size-max = 10 
    } 
    # Process 100 messages before moving to the next actor 
    throughput = 100 
}                  

Очевидно, что вы хотите создать диспетчер для актеров В тоже.

+1

Спасибо. Предположим, что множество участников 'A' и' B' были разбиты на последующие подмножества по запросу, например 'Aa',' Ab', 'Ac' и т. Д. Я полагаю, что не было бы возможности определить диспетчеров по запросу для предотвращения блокировки 'Aa'' Ab' и т. д.? – Lasf

+0

Я не совсем уверен, что я следую. Вы предлагаете, чтобы Аа, Аб и т. Д. Были ли каждый новый тип Актера? Если да, то вы хотите создать диспетчера для Aa, Ab и т. Д. Если это не то, что вы имели в виду, я боюсь, что не понимаю вопроса - может быть, вы могли бы разработать? – jamesmulcahy

+0

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