Akka Stream中的异常/错误处理

时间:2014-09-01 14:05:47

标签: scala akka akka-stream reactive-streams

我定义了以下风管:

val augmenter1 = new Augmenter1
val augmenter2 = new Augmenter2
val augmenter3 = new Augmenter3
val defaultEventAugmenterPipeline: Duct[Event, Event] = Duct[Event].
    map(augmenter1.augment).
    map(augmenter2.augment).
    map(augmenter3.augment)

和Flow:

Flow(eventConsumer).append(defaultEventAugmenterPipeline).onComplete(materializer) { ... }

和一个Augmenter看起来像这样:

class Augmenter1 extends Augmenter[Event] {
   def augment(e: Event): Event = {
      if(someCondition)
         e.addAugmentation(...)
      else
         throw new Exception("someCondition not met!")
      e
   }
}

现在,如果满足导致Augmenter1中的异常的条件,则流只会在异常的第一个实例处终止(成功),而不会抛出任何异常。 我希望能做两件事:抓住链条上的异常,然后跳到下一个活动。

我的问题:在流程中处理错误/异常的正确方法是什么?

由于

0 个答案:

没有答案