akka {

  loggers = ["akka.event.slf4j.Slf4jLogger"]
  loglevel = "WARNING"

  actor {
    # cluster is better(recommend by official document), but I prefer remote
    provider = remote
    allow-java-serialization = off

    serializers {
        power-serializer = "tech.powerjob.remote.akka.PowerAkkaSerializer"
    }

    serialization-bindings {
        "tech.powerjob.common.PowerSerializable" = power-serializer
    }
  }
  remote {
    artery {
      transport = tcp # See Selecting a transport below
      # over write by code
      canonical.hostname = "127.0.0.1"
      canonical.port = 25520
    }
  }

  # dispatcher
  task-tracker-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 = 4.0
      # Max number of threads to cap factor-based parallelism number to
      parallelism-max = 64
    }
    # 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 = 10
  }

  processor-tracker-dispatcher {
    type = Dispatcher
    executor = "fork-join-executor"
    fork-join-executor {
      parallelism-min = 2
      parallelism-factor = 2.0
      parallelism-max = 64
    }
    throughput = 10
  }

  worker-common-dispatcher {
      type = Dispatcher
      executor = "fork-join-executor"
      fork-join-executor {
        parallelism-min = 2
        parallelism-factor = 2.0
        parallelism-max = 8
      }
      throughput = 10
    }

  ##################### server config #####################
  # worker-request-core-dispatcher
    w-r-c-d {
      # 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 = 4.0
        # Max number of threads to cap factor-based parallelism number to
        parallelism-max = 128
      }
      # 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 = 10
    }

    friend-request-actor-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 = 4.0
          # Max number of threads to cap factor-based parallelism number to
          parallelism-max = 128
        }
        # 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 = 5
      }

      ##################### default config #####################
    common-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 = 4.0
            # Max number of threads to cap factor-based parallelism number to
            parallelism-max = 64
          }
          # 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 = 10
        }
}