We used guava in Apache Metron, but have switched to https://github.com/ben-manes/caffeine. I would recommend taking a look at that too.
On May 1, 2018 at 10:09:00, Charlie Meyer (charlie.me...@civitaslearning.com) wrote: We do something very similar in a custom controller service and utilize a guava cache (https://github.com/google/guava/wiki/CachesExplained) and have found it to work quite well On Tue, May 1, 2018 at 9:06 AM, Tim Dean <tim.d...@gmail.com> wrote: > Thanks Otto - > > Unfortunately, the service being called doesn’t currently support full > HTTP cache semantics at this time. I could add full support, and it is > probably the right thing to do in the long run. But for now I was hoping > for a solution that didn’t require significant enhancement to the web > service. > > -Tim > > > On May 1, 2018, at 5:47 AM, Otto Fowler <ottobackwa...@gmail.com> wrote: > > https://hc.apache.org/httpcomponents-client-ga/tutorial/html/caching.html > ? > > > On May 1, 2018 at 00:01:58, Tim Dean (tim.d...@gmail.com) wrote: > > Hello, > > I have a custom NiFi controller service that retrieves data from an > external web service via HTTP requests. The results from these HTTP > requests will be needed at various points throughout my process flow. In > some situations, I could end up needing to access the HTTP response dozens > or even hundreds of times. > > Given that the results of the HTTP request rarely change, I’d like them to > be cached by my service and returned to my processors when needed. I’d need > some way to explicitly clear the cache for those occasions when the data in > the service does change. > > I’ve looked at using the DistributedMapCacheClientService implementation > to cache my web service’s results, but it seems like that connects to a > server via a socket connection and that doesn’t seem like it would be all > that much more efficient than calling the web service directly. I’ve also > looked at using the service’s state manager to store the results as state, > but my data is a little more complex than what the documentation for state > suggests is optimal: I don’t think my total map size will get to 1MB in > size but it could be possible. > > Am I overthinking this? Would a simpler solution like creating a simple > Java HashMap inside my controller service be adequate? I could empty the > contents of the hash map whenever the controller services is > enabled/disabled. Would the memory used by this kind of simplified local > caching cause problems somewhere down the line? > > Are there other caching strategies I should be considering? > > Thanks > > -Tim > > >