Thanks Patrick
> . . .limited to a few specific use cases, where you know that the bottleneck is in the consumer actor
True, unless you look at it from a slightly different angle. Producers typically don't know or care about implementation details of the Consumers (internally long running tasks - blocking or delegation to other consumers). This means that all such mechanism helps to control is the state of the mailbox essentially making sure its empty (almost empty) before sending more messages. And if such consumer is simply a delegate to another consumer then continue using the same mechanism downstream will now give the same effect to a delegating consumer.
In other frameworks, this problem is easily solved via bounded queue channels where send(..) will actually block if the channel is full. In Akka send never blocks, but it also doesn't mean that the message was enqueued, just a promise, so the mechanism in discussion IMHO provides a fairly robust way of monitoring the state of mailboxes without introducing any blocking and/or promises that could not be kept ;).
> . . .can send it with ActorRef as well
Right, and that's what wasn't making much sense to me - sending Identify requests to something that's been identified already, hence the Status message comment.
> . . .let the consumer send a request for more messages to the producer
True, and while a common pattern I never liked it myself since it splits throttling and flow control responsibilities between two components (producer and consumer) instead of one. Producer needs to send arbitrary number of messages, then lay dormant hoping the consumer sends a requests asking for more. What if Consumer is not the asking type? Does the Producer have to know the type of Consumer it deals with? This is why I liked this pre-defined message type strategy. As a producer I don't have to know anything about the consumer (send RequestForStatus type message and receive Status), just as Consumer needs to know nothing about the producer (don't ask since producer already knows).
Cheers
Oleg