Happy Business Starts Here

Highlighted
Zuora Support Moderator

How Zuora works - technical series: “Concurrency”

Question or Problem Statement:

According to your knowledge Center "Zuora enforces tenant-level concurrent request limits from the user interface and Zuora REST and SOAP API. This policy prevents tenants from monopolizing Zuora system"

 

Can you provide additional information on Zuora concurrent request limits?

 



If you found my answer helpful, please give me a kudo ↑
Help others find answers faster by accepting my post as a solution √


4 REPLIES 4
Zuora Support Moderator

Re: How Zuora works - technical series: “Concurrency”


Solution:

 

As described in the Zuora Knowledge Center, Zuora leverages a tenant level “Concurrent request” rate limiting system policy.  This means each tenant has a defined set of dedicated processing capacity (or processing threads).  This is somewhat different than per-second rate limiting, or throttling where users are restricted to a defined API rate, or subject to lower rates.  Instead, we make a pre-defined amount of processing threads available for each tenant for select API types and you are only blocked when a given thread limit has been reached.

 

An example:

 

Per the Zuora Knowledge Center, you are allowed up to 20 concurrency for “Big Process Request” which includes the following query() objects. 

Account
Invoice
InvoicePayment
Payment
PaymentTransactionLog
RatePlan
RatePlanCharge
Subscription
Usage

 

Lets say you had a script that ran all of the above query() APIs for the above objects, and each request takes 2 seconds to process.  That means you can request 20 request simultaneously and get a response, however if you were to make 21 requests, the last one would be blocked with a 429 response.  Any additional request against this same Concurrency type would also be blocked until the first of the 20 threads are freed for more jobs (in 2 seconds per the above example). Now, in the real world, most calls take a fraction of a second so these scenarios don't happen all too often. 

 

Please review the Knowledge Center article cited below for each Concurrency Type’s standard limit. 

 

Ideally, API integration coding should be tooled intelligently to react and retry any blocked request after a given time, and further could be written in such a way as to reduce request rate if concurrency rates are hit.

 

See also

https://knowledgecenter.zuora.com/BB_Introducing_Z_Business/Policies/Concurrent_Request_Limits

 

 



If you found my answer helpful, please give me a kudo ↑
Help others find answers faster by accepting my post as a solution √


Guru

Re: How Zuora works - technical series: “Concurrency”

"Ideally, API integration coding should be tooled intelligently to react and retry any blocked request after a given time"

 

 

@nathanc can you tell us how zquotes responds to these 429 codes and how zquotes handles concurrency with this regard, retries, etc?

Maggie Longshore
Zuora Support Moderator

Re: How Zuora works - technical series: “Concurrency”

Hi @MaggieL

I'll defer to @nathanc on the Salesforce zquotes question, and wanted to add that my comment was mostly made with non-salesforce integration coding in mind.  With that said, I don't believe I've ever seen a Salesforce integration generate concurrency response.  It's possible that Salesforces own gating may limit this from being a factor.



If you found my answer helpful, please give me a kudo ↑
Help others find answers faster by accepting my post as a solution √


Guru

Re: How Zuora works - technical series: “Concurrency”

Thanks, yes my question does pertain only to using the Zuora api through Salesforce.  When we access Zuora outside of Salesforce we can handle the concurrency response. With Zquotes the API calls are wrapped by code we do not have access to and it would greatly help to know if it performs retries or what error we would see if we hit a Zuora limit.  Is there anyway to know if we have been hitting limits and have not been aware?

Maggie Longshore