A rate-limit is necessary with Reactor Events due to the possibility of a mismatch between the message rate on the source Ably channel(s) and the sink function. If the aggregate channel message rate is greater than can be sustained by the reciever, then there will be a backlog of unprocessed messages that the end-user has no visibility of, or any way to manage.


For this reason, if you want to process high volumes of messages through Reactor Events, then we recommend using an intermediary queue, such as an AWS Kinesis queue, which would then handle any rate mismatch. You can configure streaming of events from Kinesis into the Lambda function (see https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html). This allows far greater visibility into any backlog, and provides greater control over message handling; for example, message processing can be batched, stale messages can be discarded.


Further reading