The Currency Exchange Rates library implements getting live currency exchange rates from different providers. It is designed for resilience — e.g. if the first-choice provider's API is temporarily inaccessible, the application can be configured to fallback to a different provider.
The library also implements multiple ways of caching currency exchange rates for quick retrieval and for overcoming daily API call limits of the currency rate providers.
- Redis
- In-memory (via
ConcurrentHashMap
)
TODO:
-
Flexibility — the library allows a very flexible configuration of exchange rate providers, fallback chains and caching. For example, you may configure a provider with some API key as a fallback for the same provider with a different API key (for the case that the first API key runs out of available API calls).
-
Precision — Some existing utilities work with "base currencies" and do conversions in two steps: convert source currency to the base currency, then the base currency to target currency. Such implementation may produce inaccurate or wrong results, so this library doesn't do this. All conversions are performed directly in one step.
-
Minimal dependencies — the library has very few dependencies on third-party libraries, to avoid dependency conflicts for the users.