Very nice!

Would you be interested in adding a small section to the documentation,
pointing to your repository?
Perhaps in the How To <http://doc.akka.io/docs/akka/2.3.10/scala/howto.html>
section, or in the External Contributions
<http://doc.akka.io/docs/akka/2.3.10/contrib/index.html>

It could also be added to Community Projects <http://akka.io/community/>
page.

On Mon, May 4, 2015 at 11:46 AM, Akka Team <[email protected]> wrote:

> Hi Justin,
>
> This looks like a really nice tool! I think some of these ideas could go
> well with the new typed actors in the upcoming 2.4 version. I can imagine
> this with some additions to evolve into a nice FSM style DSL with many
> helpers.
>
> -Endre
>
> On Thu, Apr 30, 2015 at 5:17 AM, Justin du coeur <[email protected]>
> wrote:
>
>> Howdy, all!  I originally talked up the Requester pattern a year or two
>> ago, when I had just started playing with it seriously.  It's now matured
>> quite a bit and become rather more complete, and is being used heavily in
>> production for Querki.  And since I've gotten used to releasing open-source
>> libraries for Scala.js, I figure it's time to make Requester more generally
>> available.
>>
>> Full details can be found here on GitHub
>> <https://github.com/jducoeur/Requester>, but to give you a sense of what
>> this library is, I'll quote from the introduction to the documentation
>> there:
>>
>> =============================
>>
>> One of the most useful, and most fraught, functions in Akka is ask. On the 
>> one hand, it is invaluable for writing clear, understandable code -- after 
>> all, the pattern of "Send this message, and then do that with the result" 
>> makes loads of sense, and it's usually easy to see what the code is trying 
>> to do.
>>
>> On the other hand, ask is something of a landmine in practice, because it 
>> violates the most important invariant of Actors: there should never be code 
>> lexically inside of the Actor that doesn't run within the Actor's receive 
>> loop. ask returns a Future, and that Future will be run out-of-band, at some 
>> random time in the future. It can happen in parallel with running receive 
>> code, or not. There is lots of danger there, and it is easy to cause 
>> erratic, hard-to-reproduce bugs.
>>
>> (Not to mention the fact that sender probably won't be set to the value you 
>> expect during the response handler. One of the easiest Akka traps to fall 
>> into is using sender during a Future, which almost never works.)
>>
>> This library introduces request, which you can think of as the 
>> better-behaved big brother of ask. The look and feel is similar, but there 
>> is one crucial difference: the response handler from request is *not* 
>> Future, and it runs inside the normal receive loop. Also, unlike ask, 
>> request preserves the value of sender. The result is that you can safely 
>> write straightforward, intuitive, composable code for complex multi-Actor 
>> operations, like this:
>>
>> case GetSpacesStatus(requester) => {
>>   for {
>>     ActiveThings(nConvs) <- conversations.request(GetActiveThings)
>>     ActiveSessions(nSessions) <- sessions.request(GetActiveSessions)
>>   }
>>     sender ! SpaceStatus(spaceId, state.displayName, nConvs, nSessions)
>> }
>>
>> and have it work just as you expect.
>>
>> ==============================
>>
>> Obviously, this is less important to newfangled code that is entirely
>> hooked together with akka-streams, but I suspect I'm not the only person
>> still using Plain Old Akka heavily.
>>
>> So -- have fun, and tell me what you think.  Bug reports and pull
>> requests welcomed: while this is working well for me, I'm sure folks will
>> come up with enhancements they'd like to add...
>>
>> --
>> >>>>>>>>>> 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.
>>
>
>
>
> --
> Akka Team
> Typesafe - Reactive apps on the JVM
> Blog: letitcrash.com
> Twitter: @akkateam
>
> --
> >>>>>>>>>> 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.
>



-- 

Patrik Nordwall
Typesafe <http://typesafe.com/> -  Reactive apps on the JVM
Twitter: @patriknw

-- 
>>>>>>>>>>      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.

Reply via email to