Lionel, Right now in apollo we suspend doing more socket reads from the blocked producer. And like you said, a connection always can accept at least one message, so if you couple that with synchronous sends then the client can just use a timeout strategy to figure out that he has been blocked.
Note that on a high throughput producer, he will be blocked many times per second even though he's moving a large volume of messages. Regards, Hiram FuseSource Web: http://fusesource.com/ On Fri, Aug 26, 2011 at 5:34 AM, Lionel Cons <[email protected]> wrote: > In Apollo, one can set slow_consumer_policy=block for a topic. This is > described as: > > the producers block on slow consumers which makes producers only as > fast as the slowest consumer on the topic > > I guess one can achieve something similar in ActiveMQ too. > > But how can a broker block a producer over STOMP where it doesn't know > what the next client frame will be? > > Does this translate into returning an ERROR frame for a SEND frame to > the "blocked topic"? > > Does it mean stop reading from the producer after the first SEND frame > is received? If yes, what happens for new clients? Are they all > allowed to send one message before being blocked? > > FWIW, we have a typical use case with many distributed clients > connecting over STOMP just to send one message and then disconnect. > > Cheers, > > Lionel >
