これは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 を使用します。