Processing guarantees Preview
Apply at-most-once, at-least-once, or effectively-once delivery semantics to Pulsar FunctionsPulsar version 2.0
The documentation that you’re reading is for the 2.0 release of Apache Pulsar. For more information on Pulsar 2.0, see this guide.
Pulsar Functions provides three different messaging semantics that you can apply to any function:
Delivery semantics | Description |
---|---|
At-most-once delivery | Each message that is sent to the function will most likely be processed but also may not be (hence the “at most”) |
At-least-once delivery | Each message that is sent to the function could be processed more than once (hence the “at least”) |
Effectively-once delivery | Each message that is sent to the function will have one output associated with it |
Applying processing guarantees to a function
You can set the processing guarantees for a Pulsar Function when you create the Function. This pulsar-function create
command, for example, would apply effectively-once guarantees to the Function:
$ bin/pulsar-admin functions create \
--processingGuarantees EFFECTIVELY_ONCE \
# Other function configs
The available options are:
ATMOST_ONCE
ATLEAST_ONCE
EFFECTIVELY_ONCE
By default, Pulsar Functions provide at-most-once delivery guarantees. So if you create a function without supplying a value for the --processingGuarantees
flag, then the function will provide at-most-once guarantees.
Updating the processing guarantees of a function
You can change the processing guarantees applied to a function once it’s already been created using the update
command. Here’s an example:
$ bin/pulsar-admin functions update \
--processingGuarantees ATMOST_ONCE \
# Other function configs