Thanks for response, it looks good to me!
четверг, 13 ноября 2014 г., 18:36:05 UTC+4 пользователь √ написал:
>
> Hi Boris,
>
> What about something like:
>
> implicit class ListSourceMerge[T](val sources: List[Source[T]]) extends
> AnyVal {
> def merge(): Source[T] =
> sources match {
> case Nil => Source.empty[T]
> case List(source) => source
> case sources =>
> Source[T]() { implicit b =>
> val out = UndefinedSink[T]
> val merge = Merge[T]
> sources.foreach { _ ~> merge }
> merge ~> out
> out
> }
> }
> }
>
> And then you can import that one and write:
>
> val mergedSource = sources.merge()
>
> On Thu, Nov 13, 2014 at 3:30 PM, Boris Lopukhov <[email protected]
> <javascript:>> wrote:
>
>> Then, I want to create the mergedSource:
>>
>> val mergedSource = sources match {
>> case List(source) => source
>> case manySources =>
>> val merge = Merge[Message]
>> sources.map(_ ~> merge)
>> merge
>> }
>>
>>
>>
>> But the general type of a Source and a Merge is an Object.
>> Thereby I can not create the mergedSource separately from other code. I
>> need to do like:
>>
>> def createMergedSource(sources: List[Source[Message]])(implicit
>> builder : FlowGraphBuilder) = {
>> val merge = Merge[Message]
>> sources.map(_ ~> merge)
>> merge
>> }
>>
>> sources match {
>> case List(source) =>
>> source ~> doSomethink1 ~> doSomethink2 ~> .. ~> doSomethinkN ~> out
>> case manySources =>
>> createMergedSource(manySources) ~> doSomethink1 ~> doSomethink2 ~>
>> .. ~> doSomethinkN ~> out
>>
>>
>>
>> code becomes more difficult and contains the copy-paste
>>
>> четверг, 13 ноября 2014 г., 14:16:12 UTC+4 пользователь √ написал:
>>>
>>> Skip the merge if you only have 1 source?
>>>
>>> On Thu, Nov 13, 2014 at 10:34 AM, Boris Lopukhov <[email protected]>
>>> wrote:
>>>
>>>> Hi everyone!
>>>>
>>>> I have one or a few databases from which I want to download and process
>>>> data.
>>>> I would like to merge all sources and work with result flow:
>>>>
>>>> val sources = config.getConfigList("database.nodes").map(createSource
>>>> )
>>>> val merge = Merge[Message]
>>>> val mergedFlow = Flow[Message]
>>>> sources.map(_ ~> merge)
>>>> merge ~> mergedFlow
>>>>
>>>>
>>>>
>>>> but it does not work because Merge must have at least two incoming edge.
>>>> What is the cause of this constraint and how i can work around it?
>>>>
>>>> --
>>>> >>>>>>>>>> Read the docs: http://akka.io/docs/
>>>> >>>>>>>>>> Check the FAQ: http://doc.akka.io/docs/akka/
>>>> current/additional/faq.html
>>>> >>>>>>>>>> Search the archives: https://groups.google.com/
>>>> group/akka-user
>>>> ---
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Akka User List" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> To post to this group, send email to [email protected].
>>>> Visit this group at http://groups.google.com/group/akka-user.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>
>>>
>>> --
>>> Cheers,
>>> √
>>>
>> --
>> >>>>>>>>>> Read the docs: http://akka.io/docs/
>> >>>>>>>>>> Check the FAQ:
>> http://doc.akka.io/docs/akka/current/additional/faq.html
>> >>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Akka User List" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected]
>> <javascript:>.
>> Visit this group at http://groups.google.com/group/akka-user.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
>
> --
> Cheers,
> √
>
--
>>>>>>>>>> Read the docs: http://akka.io/docs/
>>>>>>>>>> Check the FAQ:
>>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user
---
You received this message because you are subscribed to the Google Groups "Akka
User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.