Cache

The service-lib library provides a simple key-value cache. The cache is thread-safe and uses a non-blocking Mutex. The data stored in the cache is local to the micro-service instance. The primary use-case for this cache is to save data from other micro-services locally, which is useful for a small amount of time. The SimpleCache implementation integrates with integration-testing and they are automatically cleared at the end of any test.

Example: Using the SimpleCache

val apps = SimpleCache<NameAndVersion, Application>(SimpleCache.DONT_EXPIRE) { nv ->
    AppStore.findByNameAndVersion
        .call(FindApplicationAndOptionalDependencies(nv.name, nv.version), serviceClient)
        .throwIfInternal()
        .orNull()
        ?.let { Application(it.metadata, it.invocation) }
}

appService.apps.get(NameAndVersion("appName", "appVersion"))