1
Akkaストリームで次の関数のラッパーを作成しようとしています。汎用パラメータスカラのアクセスタイプパラメータ
RestartFlow.withBackoff(minBackoff = 3.seconds,
maxBackoff = 30.seconds,
randomFactor = 0.2) {
() => s
}
ここで、sはバックオフで折り返しているソースです。この
RetryFlow(s)
アイブ氏のようなもののような理想的にはidがこれを作成するために管理:
object RetryFlow {
def apply[In, Out, _, T <: Flow[In, Out, _]](source: T, minBackoff: FiniteDuration = 3.seconds, maxBackoff: FiniteDuration = 30.seconds, randomFactor: Double = 0.2): Flow[In, Out, NotUsed] = {
RestartFlow.withBackoff(
minBackoff = minBackoff,
maxBackoff = maxBackoff,
randomFactor = randomFactor) {
() => source
}
}
}
問題私は呼び出しサイトで再度フローのすべての3種類のparamsを提供する必要があり、それは恐ろしい見えている
RetryFlow[JustDataEvent, JustDataEvent, NotUsed, Flow[JustDataEvent, JustDataEvent, NotUsed]](s)
ここでは任意のタイプのパラメータを入力できるため、タイプセーフでもありません。
私は気持ちがいいはずですが、余分なタイプのパラメータをIn/Outではなく、T#In、T#OutなどのようにしてTが流れを拡張するしたがって、私は必要なタイプのパラメータを既に持っています。
うんは素晴らしい作品ありがとう、私は私が一般的なのparamとしてフローを取ることによって、間違ったアプローチから、それを見ていたと思います –