ARTEMIS-627 document details of Producer BLOCK in CORE

This commit is contained in:
Martyn Taylor 2016-07-18 14:51:56 +01:00 committed by Andy Taylor
parent fe27cd829d
commit 5695164b87
1 changed files with 21 additions and 5 deletions

View File

@ -198,12 +198,19 @@ size can be set via the
`ActiveMQConnectionFactory.setProducerWindowSize(int
producerWindowSize)` method.
#### Blocking producer window based flow control
#### Blocking producer window based flow control using CORE protocol
Normally the server will always give the same number of credits as have
been requested. However, it is also possible to set a maximum size on
any address, and the server will never send more credits than could
cause the address's upper memory limit to be exceeded.
When using the CORE protocol (used by both the Artemis Core Client and Artemis JMS Client)
the server will always aim give the same number of credits as have been requested.
However, it is also possible to set a maximum size on any address, and the server
will never send more credits to any one producer than what is available according to
the address's upper memory limit. Although a single producer will be issued more
credits than available (at the time of issue) it is possible that more than 1
producer be associated with the same address and so it is theoretically possible
that more credits are allocated across total producers than what is available.
It is therefore possible to go over the address limit by approximately:
'''total number of producers on address * producer window size'''
For example, if I have a JMS queue called "myqueue", I could set the
maximum memory size to 10MiB, and the the server will control the number
@ -257,6 +264,15 @@ control.
> want this behaviour increase the `max-size-bytes` parameter or change
> the address full message policy.
> **Note**
>
> Producer credits are allocated from the broker to the client. Flow control
> credit checking (i.e. checking a producer has enough credit) is done on the
> client side only. It is possible for the broker to over allocate credits, like
> in the multiple producer scenario outlined above. It is also possible for
> a misbehaving client to ignore the flow control credits issued by the broker
> and continue sending with out sufficient credit.
### Rate limited flow control
Apache ActiveMQ Artemis also allows the rate a producer can emit message to be limited,