Announcements
Hello everyone,
we use BC in the Azure cloud with a connection to a shop and other third-party systems. There we have SOAP and OData calls limited to a maximum of 600 calls per minute. Unfortunately, this is not enough for us and we are looking for a way to increase the frequency of communication with third-party systems and with high performance.
Is there a way to implement this in Azure, e.g. with an API gateway? Maybe with a new technology? RPC ?
I would be happy about suggestions for a solution.
VG
Volrath
I forgotten to tell you that BC has to respond to the request immediatly. So handling Requests in batches would not fit into because then we have to delay the request.
How would the API Call with the QueueTrigger be like? Would it consume the SOAP/OData limits?
I forgot also to mention that you can also use batching to perform many operations in one call. Instead of issuing multiple requests, one request can be issued. Please be aware of the batch size. If the batch is too large, a timeout will occur.
A QueueTrigger is an Azure Function that starts when a message is inserted into the queue. Inside this function you call BC APIs. If it’s real time you need to handle throttling if too much requests are sent to BC, no way of avoiding this. But in this way the transaction is reliable (you don’t loose messages in case of exceptions and you can remove the message from the queue only when the data is successfully submitted to BC).
A TimerTrigger would not fit in our requirements, because we need the response from BC synchronously to the request.
How would the queue trigger look like and how will it call BC without using a SOAP/OData Call?
If you have a third-party system directly calling BC APIs, you’ve request limits to respect. You can implements retry Logic to handle this scenario if HTTP Too Many Requests error is received.
if you don’t want to do this, I suggest to decouple the external system from BC (best approach in general if you have an high number of transactions). To do that, you can create a queue on Azure receiving the messages from the external system (with the frequency you want). Then a Queue Trigger or Timer Trigger Azure Function can read the data from the queue and call BC.
in this scenario your transactions are reliable and you can push/pull messages with the desired ratio.
Hi
Maybe contact Stefano Demiliani https://demiliani.com/ and see if he can think of any solution.
Also, look into Cloud Replicator by Erik Houggard and see if he can be any help https://www.hougaard.com/blog/
For example, would it be an option to implement an Azure Function that accepts HTTP requests and forwards them to Business Central with high performance? BC must be able to consume the Azure Function via the corresponding DLL.
Currently it would be enough for us if BC consumes the requests (read).
No ideas? Is perhaps a solution via a proxy a possibility?
Hello,
This is a typical question for an implementation partner. Hope you will get a few good answers.
Thank you.
André Arnaud de Cal... 291,359 Super User 2024 Season 2
Martin Dráb 230,370 Most Valuable Professional
nmaenpaa 101,156