Inspirel banner

Programming Distributed Systems with YAMI4

4.3.17 Outgoing Water Marks

Each connection has an associated outgoing message queue, where already serialized messages are stored until they are physically pushed for transmission. In order to protect the agent from overflowing these queues when the user program posts the messages for transmission faster than they can be physically pushed over the network, there is a flexible per-agent mechanism that allows to suppress the user program in order to give the underlying infrastructure enough time to cope with the work.

There are two values that manage the flow control for outgoing messages - the high water mark and the low water mark.

The high water mark is an upper limit for the number of outgoing messages in all queues together. If this limit is reached, further attempts to send the message are suppressed (that is, the user code is blocked) until the queues are consumed to the level defined by low water mark.

Property name: "outgoing_high_water_mark".

Property type: integer, should be a non-negative number.

Default value: 100.

Property name: "outgoing_low_water_mark".

Property type: integer.

Default value: 20, should be a non-negative number and not greater than high water mark.