Guaranteed delivery (GD) uses log stores to ensure that a GD subscriber registered with a GD window receives all the data processed by that window even if the client is not connected when the data is produced.
GD is supported only on windows assigned to log stores. For streams, delta streams, or windows assigned to memory stores, consider using persistent subscribe pattern (PSP). For information on PSP, see the Studio Users Guide.
When you enable guaranteed delivery on a window that has registered guaranteed delivery subscribers, the window stores a copy of every event it produces in its log store until all the registered guaranteed delivery subscribers acknowledge receiving the events.
SAP recommends that when you enable guaranteed delivery and set up subscriptions, you also enable the consistent recovery option in the project configuration (CCR file).
You can set up a GD window in Studio or directly in the CCL file using a CREATE WINDOW or CREATE FLEX statement. Make sure to assign a log store to each GD-enabled window. Do not create GD-enabled windows inside modules—this is not supported because you cannot attach adapters or subscribe directly to elements in modules.
A window configured for GD also supports non-GD subscriptions. Enabling GD does not significantly affect the window’s performance when it has no registered GD subscribers.
You can subscribe to windows configured for GD using adapters, bindings, the SDKs, or the subscribe tool.
Enable guaranteed delivery on the adapters that support it and configure the GD adapter parameters. See the Adapters Guide for information on adapter support for GD.
Enable GD on any project bindings to ensure that data is delivered to remote projects. See the Studio Users Guide for details.
In the SDKs, set up GD subscriptions so each client can receive data and checkpoint messages from your project. The client, in turn, must periodically respond to the project server with a commit message reporting the sequence number of the latest event the client has processed. The server does not need to save events once it knows that all GD clients have processed them, so it can free up their space for other uses.
See the C SDK Guide, the Java SDK Guide, and the .NET SDK Guide for more information.
For testing or simple use cases, use the esp_subscribe tool to subscribe in GD mode. See the Utilities Guide for details.