I am looking for a way to preload the webMethods cache in a smart way.
The scenario is, that I am going to make a lot of lookups to an external system, and until the cache has been build up “the normal way” by saving the result for a given lookup value, there could be a lot of strain on the system due to a lot of external system lookups when the cache is still small e.g. after a restart of the IS.
So, experts, what is the best way to handle this challenge? I am hoping to be able to fill the cache by running some job every fortnight at night when the system has a lot of free ressources.
I would prefer to do the lookups to the external system when they occur and are not already in the cache.
Otherwise you will have the strain during the “preloading” phase completely instead of deferring it to the first time a not already persisted input is queried.
Additionally you would have to know the most common inputs to preload their results (i.e. by using a StartupService) from the external system.
Remember to specify a reasonable cache expiration period before a cached result is considered outdated and queried once again from external system.
if the lookup is for XREF that you are going to use in webMethods very regularly and if the data is fairly static - it is okay to do preloading. It really depends on amount of data and if you have resources to perform preloading.
You can potentially look at a hybrid strategy - build cache as if it is to be loaded dynamically and run a batch during lean time (prior to major lookup occuring) to preload.
if your preloading requirement is extensive - you may actually want to explore how to build APIs to return cache values and use those in your flow and dedicate capacity for preloading and servicing results. I have seen different models used for this - e.g request/reply using broker documents to interrogate cache, rest apis to interrogate cache. i have not used networked cache with this set up - but that would be another potential mechanism.