1

これはAkka Stream - Select Sink based on Element in Flowの後続の投稿です。

ストリーミングしたい SQS キューが複数あるとします。AlpakkaのAWS SQS ConnectorSourceを使用して作成しています。

implicit val sqsClient: AmazonSQSAsync = ???
val queueUrls: List[String] = ???
val sources: List[Source[Message, NotUsed]] = queueUrls.map(url => SqsSource(url))

combineさて、ソースをマージしたいと思います。ただし、Source.combineメソッドはパラメーターとしてリストを渡すことをサポートしておらず、varargs のみをサポートしています。

def combine[T, U](first: Source[T, _], second: Source[T, _], rest: Source[T, _]*)(strategy: Int ⇒ Graph[UniformFanInShape[T, U], NotUsed])

もちろん、すべてのソース パラメータを指で入力できます。ただし、10 個のソース キューがある場合、パラメーターはかなり長くなります。

ソースのリストからソースを結合する方法はありますか?

[補足]

Ramon J Romero y Vigilが指摘したように、ストリームを "薄いベニア" に保つ方が良い方法です。ただし、この特定のケースでは、sqsClientすべてのSqsSource初期化に single を使用します。

4

1 に答える 1