[Spread-users] producer/consumer queue via spread.
John Lane Schultz
jschultz at spreadconcepts.com
Tue Mar 20 18:21:41 EDT 2007
What I believe is happening is that your producer is producing messages faster
than your consumer can take them from Spread. This causes the consumer's
message buffer within Spread to grow. When it gets too big (~1000 msgs), Spread
disconnects your consumer rather than run out of memory and crash.
If you are going to be producing messages fast, then you need a flow control
mechanism to ensure you don't overflow your receiver and have Spread kick the
The simplest flow control mechanism would be to wait a period of time (e.g. -
1-10ms) between sending each message. If your receiver does little work per msg
receipt and is not loaded, then it probably will be able to keep up.
For a simple message based flow control mechanism you can examine the
spflooder.c program. For a true flow control mechanism, you need your consumer
to send some form of ACKs back to the producer and block the producer from
sending if the consumer falls "too far" (i.e. - approaching 1000 msgs) behind.
Allan Bailey wrote:
> John Lane Schultz <jschultz at spreadconcepts.com> wrote:
>> That solution only works if no one else is sending to the group and you have
>> group membership turned off.
>> If you really want just a producer, with no reads, then the most simple and
>> efficient route is to simply not SP_join to the group.
> Yes, this works for the producer, but now the consumer also dies after a bit.
> I've tried having the consumer also send messages, but it still dies.
Spread Concepts LLC
Phn: 443 838 2200
Fax: 301 560 8875
More information about the Spread-users