Skip to main content

Configuring Pause Duration

Pause duration refers to a predetermined period during which SyncHive suspends the publishing of messages to an external system that has implemented rate limits. This mechanism is crucial when the target system encounters a rate limit, as continuing to send messages can lead to a Timeout error from too many requests being made in a short period.

The Role of Pause Duration in SyncHive

For SyncHive, managing the pause duration is a strategic approach to handle rate limits imposed by external systems. By pausing message publishing, SyncHive allows these systems time to process pending requests. This prevents the accumulation of unprocessed messages and helps avoid a situation where the external system is overwhelmed and unable to accept new requests.

Step-by-Step Guide to Configure the Pause Duration

To configure the pause duration, the Connector must recognize when a message hits the rate limit of an external system and respond accordingly. Below is a sample response from a Connector indicating that a rate limit has been reached, prompting SyncHive to pause the integration. In this example, the backoffPeriodInMinutes is set to 30 minutes, indicating the duration for which message publishing will be paused:

{
"type": "http://www.synchive.com/common/pause-integration",
"typeCode": "PAUSE_INTEGRATION",
"status": 400,
"message": "Replace with the actual error message",
"backoffPeriodInMinutes": 30,
"service-path": "/connect-shopify-service/v1/data"
}

The backoffPeriodInMinutes property determines the duration for which SyncHive should pause message publishing. This value, configurable within the Integration properties, defaults to 2 minutes if not specified. Adjusting the backoffPeriodInMinutes value in accordance with the rate limits of the external systems you are integrating with can significantly improve the robustness of your data exchange processes.

To retrieve the backoffPeriodInMinutes value set in the Integration properties, request this information from SyncHive using the endpoint below:

GEThttps://{synchive_url}/v1/integration/{integrationKey}/{integrationVersion}/{integrationBuildNumber}

Here is a sample response, where the backoffPeriodInMinutes is located under propertyValues:

{
"integration": {
"version": "1.0.0",
"buildNumber": 532,
"key": "shopifyjs",
"name": "ShopifyJs",
"connectorKey": "shopifyjs",
"group": "ECOMMERCE",
"status": "ENABLED"
},
"contact": {
"contactType": "HTTP_ENDPOINT",
"contactFormat": "JSON"
},
"shapes": [
{
"shapeName": "AttributeValue",
"operatingMode": "LIVE",
"inboundStatus": "ENABLED",
"inboundUpdateType": "NONE",
"checkFrequencyMinutes": 0,
"inboundFilterStatus": "ENABLED",
"outboundStatus": "ENABLED",
"dryrun": true,
"outboundFilterStatus": "DISABLED"
}
],
"propertyValues": [
{
"name": "backoffPeriodInMinutes",
"value": "30"
}
]
}