Akka溪流入口和出口不匹配

Akka溪流入口和出口不匹配,akka,akka-stream,Akka,Akka Stream,我得到以下错误: java.lang.IllegalArgumentException: requirement failed: The inlets [] and outlets [BlockOut.out] must correspond to the inlets [] and outlets [BlockOut.out] 我的流程定义如下: class ReadBlockStage(dataStore: DataStore, implicit val exceutionContext:

我得到以下错误:

java.lang.IllegalArgumentException: requirement failed: The inlets [] and outlets [BlockOut.out] must correspond to the inlets [] and outlets [BlockOut.out] 我的流程定义如下:

class ReadBlockStage(dataStore: DataStore, implicit val exceutionContext: ExecutionContext) extends GraphStage[FlowShape[ByteString, ByteString]] with DefaultJsonProtocol {
  val in = Inlet[ByteString]("DigestSpec.in")
  val out = Outlet[ByteString]("BlockOut.out")
  override val shape = FlowShape.of(in, out)
  ...
}

为什么我会犯这个错误?流的“输出”端口类型为
Outlet[ByteString]
,而我的
Source
类型为
Source[ByteString,NotUsed]
。错误消息非常混乱,因为它看起来形状和预期形状相同。

我解决了问题。我忘记为每个图形元素执行builder.add()

class ReadBlockStage(dataStore: DataStore, implicit val exceutionContext: ExecutionContext) extends GraphStage[FlowShape[ByteString, ByteString]] with DefaultJsonProtocol {
  val in = Inlet[ByteString]("DigestSpec.in")
  val out = Outlet[ByteString]("BlockOut.out")
  override val shape = FlowShape.of(in, out)
  ...
}