I've recently created a project at my company, using Guice, rxjava and vertx, to provide a cache layer, with pluggable provider. By default I'm using hazelcast, by using the default-cluster hazelcast configuration used for vertx, I expand upon it, and run my application as a cluster, but I also add a map configuration with it's own eviction policy (ex: currently using LRU), to use as a cache layer for backend queries being performed by my API.
If my company allows, I have no problem sharing this with you, however I'm currently running into an issue, where load testing my application with a somewhat higher TPS then usual, hazelcast starts failing. And when the nodes rejoin the cluster many of the requests just timeout.
I've profiled the application, and everything is well within memory limits.
I'm using vertx-hazelcast to have access to the shareddata and be able to do Rxified async calls to my cache map with a preconfigired TTL.