But thats a different mailbox no?  not sure how another_server is going to be able to access the mailbox of the calling server unless the messages get persisted somehow<br><br><div class="gmail_quote">On Mon, Oct 15, 2012 at 7:54 PM, Yogish Baliga <span dir="ltr"><<a href="mailto:baliga@gmail.com" target="_blank">baliga@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">You can do the batching of messages in handle_cast. When number of messages in a batch exceed some number, do the processing in another process or gen_server?<div>
<br></div><div>handle_cast(Msg, State) when length(State) > 10 -></div>
<div>   gen_server:call(another_server, State),</div><div>   {noreply, []);</div><div>handle_cast(Msg, State) -></div><div>   {noreply, [Msg|State]}.</div><div><br></div><div>    <br><br><div class="gmail_quote"><div>
<div class="h5">On Mon, Oct 15, 2012 at 3:04 PM, AD <span dir="ltr"><<a href="mailto:straightflush@gmail.com" target="_blank">straightflush@gmail.com</a>></span> wrote:<br>

</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">Why would callers timeout (if using cast), is b/c the flush would prevent the gen_server from sending a reply ?<div>

<div><br><br><div class="gmail_quote">On Mon, Oct 15, 2012 at 3:36 PM, Gleb Peregud <span dir="ltr"><<a href="mailto:gleber.p@gmail.com" target="_blank">gleber.p@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>On Mon, Oct 15, 2012 at 7:31 PM, AD <<a href="mailto:straightflush@gmail.com" target="_blank">straightflush@gmail.com</a>> wrote:<br>




> Hello,<br>
><br>
>  I have a use case where I would like to flush() the Mailbox in a loop.  I<br>
> have a process that takes about 500ms to execute, and i would like the<br>
> process to operate on batches of messages from the Mailbox rather than 1 at<br>
> a time.  Since the sender can push messages to the mailbox at tens of<br>
> messages/sec and I would like to preserve order, the most efficient way<br>
> right now I think of is to take messages off the mailbox in batches.<br>
><br>
> If there is a process sending to a gen_server:cast at , say, 10 messages/sec<br>
> , can i use flush to consume all 10 messages from teh mailbox at once?<br>
> Something like<br>
><br>
> flush() -><br>
>         receive<br>
>                 _ -> flush()<br>
>         after<br>
>                 0 -> ok<br>
>         end.<br>
<br>
</div></div>Of course you can. The code is correct as well. There are two problems here:<br>
1) It will consume gen_server:calls, hence callers will timeout<br>
2) It will consume sys messages, hence e.g. sys:get_status/1 won't work<br>
<br>
Cheers,<br>
Gleb Peregud<br>
</blockquote></div><br>
</div></div><br></div></div>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div><br>
</div>
</blockquote></div><br>