2016-03-28 22 views
1

Denetim durumlarını kullanarak kurtarmaya çalışıyorum, harita kullanarak Akış aşamaları yazdığımda çalışır, ancak grafik aşamasını kullanırsam, hiçbir zaman yakalanmaz ve tüm boru hattıGraphStage ile denetim stratejisini kullanmıyor

başarısız olur
object test extends App{ 

     val stageSupervisionDecider: Supervision.Decider = { 
     case cEx: IllegalArgumentException => 
      println("Supervision Catch") 
      Supervision.Resume 
     case _ => Supervision.Stop 
     } 

     implicit val system = ActorSystem("system") 

     implicit val materializer = ActorMaterializer(
     ActorMaterializerSettings(system) 
      .withSupervisionStrategy(stageSupervisionDecider) 
    ) 

     Source(Vector(1,2,3,4,5,6,7)) 
     .via(new FailFlow) 
     .runWith(Sink.foreach(println)) 
    } 


    class FailFlow extends GraphStage[FlowShape[Int, Int]] { 

     val in = Inlet[Int]("FailFlow.In") 
     val out = Outlet[Int]("FailFlow.Out") 

     override def shape: FlowShape[Int, Int] = FlowShape.of(in, out) 

     override def createLogic(inheritedAttributes: Attributes): GraphStageLogic = { 
     new GraphStageLogic(shape) { 
      setHandler(in, new InHandler { 
      override def onPush(): Unit = { 
       val m = grab(in) 
       if(m % 2 == 0) 
       throw new IllegalArgumentException("illegal value") 
       else 
       push(out,m) 
      } 
      }) 

      setHandler(out, new OutHandler { 
      override def onPull(): Unit = { 
       pull(in) 
      } 
      }) 
     } 
     } 
    } 

Burada neler olduğuyla ilgili bir fikrin var mı?

cevap

1

documentation (büyük kırmızı kutu) göre:

ZipWith, GraphStage kavşak, ActorPublisher kaynak ve çevresindeki ActorSubscriber denetim stratejisini onur yok bileşenler henüz bağlıyor lavabo

+0

herhangi bir iş? – Rabzu

İlgili konular