I was implementing a solution using Platform Events, and was wondering can I use ReplayId as a unique field for the new record I am creating after subscribing to fired platform event.
All I can see for Platform Events' ReplayID Field is
Each event message is assigned an opaque ID contained in the ReplayId
field. The ReplayId field value, which is populated by the system,
refers to the position of the event in the event stream. Replay ID
values are not guaranteed to be contiguous for consecutive events. For
example, the event following the event with ID 999 can have an ID of
1,025. A subscriber can store a replay ID value and use it on
resubscription to retrieve events that are within the retention
window. For example, a subscriber can retrieve missed events after a
connection failure. Subscribers must not compute new replay IDs based
on a stored replay ID to refer to other events in the stream.
There is no mention that replayId is unique and autoincrementing even after retention window.
I don't want to corrupt data if the replayId repeats itself.
Best Answer
This may clarify to an extent. Both Platform Events and Streaming API are based on Bayeux protocol and CometD. This is something what the documentation link on Streaming API states on the replayId:
And this is what the documentation on Platform Event says:
However not really sure, what's the limit of the ids generated, as say it reaches 9999, does it reset to 1 or goes to 10000. But assuming it's a system field, it must have been accounted for a larger limit. But still, I would think these ids should not be used for any uniqueness outside of the event scope.