https://github.com/mdeket/ehcache-spring-metrics
Multi module maven project with admin server and application that uses ehcache.
https://github.com/mdeket/ehcache-spring-metrics
admin-dashboard admin-ui caching ehcache ehcache-configuration ehcache-spring java maven multimodule spring spring-boot
Last synced: about 2 months ago
JSON representation
Multi module maven project with admin server and application that uses ehcache.
- Host: GitHub
- URL: https://github.com/mdeket/ehcache-spring-metrics
- Owner: mdeket
- Created: 2018-04-02T15:17:09.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2018-04-05T12:39:07.000Z (about 8 years ago)
- Last Synced: 2025-02-27T11:58:26.721Z (over 1 year ago)
- Topics: admin-dashboard, admin-ui, caching, ehcache, ehcache-configuration, ehcache-spring, java, maven, multimodule, spring, spring-boot
- Language: Shell
- Size: 89.8 KB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Springboot application with admin server and application that uses EhCache
Admin server is only used to display metrics in a nicer, more human readable way. This app is also a service registry.
It loads all the necessary dependencies for it through spring-boot-admin dependency. You can read more about Codecentric's Admin Server [here](https://github.com/codecentric/spring-boot-admin).
Demo application is a simple app that has only two endpoints, one that serves cached data and one that doesn't.
```http://localhost:8081/api/demo``` - not cached
```http://localhost:8081/api/demo/cached``` - cached data
For demo purposes I have used [Fake Response API](http://www.fakeresponse.com/) that has a possibility to set the amount of time you would like the response to be delayed which is perfect for testing caching of your API.
Example: ```http://www.fakeresponse.com/api/?sleep=3```
## Starting the apps
If you don't have maven installed, I recommend you to follow this step-by-step [tutorial](https://www.mkyong.com/maven/how-to-install-maven-in-windows/).
Clone the repo and go to ehcache-spring-metrics folder.
If you use IntelliJ, then just start AdminApplication and DemoApplication. Configurations for IntelliJ are already included.
If you want to start it from your terminal, run:
```mvn install```
Then start admin application by running ```mvn spring-boot:run -pl admin``` and open your browser on [http://localhost:8080](http://localhost:8080).
Open a new terminal go to the root of the project and run ```mvn spring-boot:run -pl application``` and open your browser on [http://localhost:8081](http://localhost:8081). You suppose to get Spring's Whitelabel Error page (404), if you didn't, well you did something wrong, just try again.
## Actual usage
Test the endpoint that I have mentioned above. The not-cached endpoint has sleep for 3 seconds as well as cached one when you hit it for the first time, after that endpoint with cached data will return response in a couple of milliseconds.
## EhCache configuration
All of ehcache configuration can be found in ehcache.xml in resource folder.
Statistics are enabled and cache alias for cached data is defined as ``fakeSlowData``.
One thing left is the annotation that will say what data to cache. Open DemoService class and look for the method ``getCachedData``. It has ``@Cacheable("fakeSlowData")`` annotation that say that data returned from that function will be cached with alias ``fakeSlowData``.
## Metrics
1. In order to see the metrics, first you have to have cached data, so first fire a http request to ``http://localhost:8081/api/demo/cached``.
2. Open admin app and go to the metrics tab.
3. You will see a block with title ``cache`` which contains hit and miss ratio. Hit and miss ratio will update each time you send a request to ``/cached`` endpoint.
Keep in mind that in ehcache.xml cache has expiry set for 10 seconds, that means that after 10 seconds cache with alias ``fakeSlowData`` will become empty and http request to FakeResponseAPI will be sent again in order to get new data to cache.