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:
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"
}
]
}