2016-09-03 10 views
1

consitent-hashing-pool 라우터의 경우 아래에 HOCON이 주어지면 hashMapping을 어떻게 지정해야합니까?Hocon을 사용할 때 HashMapping을 지정하는 방법

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) 작업

Router = Some (FromConfig.Instance.WithFallback collectorRouter)을 감안할 때

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"] 
    } 

hashMapping 기능을 지정하는 올바른 방법은 무엇입니까하지 않습니다?

편집 한 콘솔에서 경고는

Akka.Routing.ConsistentHashingRoutingLogic|Message [Message] must be handled by hashMapping, or implement [IConsistentHashable] or be wrapped in [ConsistentHashableEnvelope]

답변

0

three ways of specifying the hash key을있다입니다. 가장 좋아하는 것은 IConsistentHashable을 구현하고 ConsistentHashKey 속성에서 키의 일부 속성을 기반으로 키를 반환하는 것입니다.

my Consistent Hashing article에서 예 발췌 (C#에서, 미안 해요는 F 번호를 모르는) :

public class CurrencyPriceChangeMessage : IConsistentHashable 
{ 
    public string CurrencyPair { get; } 
    public decimal Price { get; } 

    public object ConsistentHashKey 
    { 
     get 
     { 
      return this.CurrencyPair; 
     } 
    } 

해시 키는 같은 routee 항상 같은 키를 사용하여 메시지를 라우팅하는 데 사용됩니다.

+0

hocon에서 'nr-of-instances'를 3으로 변경했으며 라우터에 3 개의 경로가 있습니다. 해싱 또한 효과가있었습니다. 라우터가 코드와 호콘 모두에 정의되어있을 때, hocon과 코드에서 config를 사용하여 라우터를 선택합니다. – ritcoder

+0

내가 아는 한, 코드와 HOCON 모두에서 설정이 정의되면 HOCON이 우선합니다. – Gigi

+0

Noted. 그때는 괜찮습니다. – ritcoder