Étant donné le HOCON
ci-dessous pour un routeur consitent-hashing-pool
, comment puis-je spécifier le hashMapping.Comment spécifier HashMapping lors de l'utilisation de Hocon
akka {
actor {
serializers {
wire = "Akka.Serialization.WireSerializer, Akka.Serialization.Wire"
}
serialization-bindings {
"System.Object" = wire
}
deployment {
/data-collector {
router = consistent-hashing-pool
nr-of-instances = 10
}
}
}
loggers = ["Akka.Logger.NLog.NLogLogger,Akka.Logger.NLog"]
}
Compte tenu
let config = Configuration.load()
let systemName = config.GetString("app-config.actorsystem", "my-system")
let system = System.create systemName config
let collectorRouter =
let hashMapping (msg:obj) =
match msg with
| :? Message as msg ->
match msg with
| Parse (_, req) -> req.uniqueId |> box
| _ -> "-" |> box
ConsistentHashingPool (10, ConsistentHashMapping hashMapping)
let dataCollectorProps =
{ props (dataCollector settings.collector) with
Router = Some (collectorRouter :> RouterConfig)} //(FromConfig.Instance.WithFallback collectorRouter)
let test = spawn system "data-collector" <| dataCollectorProps
Router = Some (collectorRouter :> RouterConfig)
travail
Router = Some (FromConfig.Instance.WithFallback collectorRouter)
ne le fait pas
Quelle est la bonne façon de spécifier la fonction hashMapping?
Edit 1 L'avertissement de la console est
Akka.Routing.ConsistentHashingRoutingLogic|Message [Message] must be handled by hashMapping, or implement [IConsistentHashable] or be wrapped in [ConsistentHashableEnvelope]
J'ai changé le 'nr-de-instances' à 3 dans hocon et le routeur avait trois routes. Le hachage a également travaillé. Est-il vrai que lorsque le routeur est défini à la fois en code et en hocon, il choisit celui de hocon et l'ajoute à la configuration du code? – ritcoder
Autant que je sache, quand un paramètre est défini à la fois dans le code et HOCON, le HOCON a la priorité. – Gigi
Noté. Cela fonctionne bien alors. – ritcoder