I was trying simple money conversion in using java money-api & moneta repository.
<dependency>
<groupId>javax.money</groupId>
<artifactId>money-api</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.javamoney</groupId>
<artifactId>moneta</artifactId>
<version>1.4.2</version>
</dependency>
IMFHistoricRateProvider imf = new IMFHistoricRateProvider();
LocalDate now = LocalDate.now();
ExchangeRate exr = null;
long start = System.currentTimeMillis();
LocalDate date = LocalDate.parse("2021-05-25", DateTimeFormatter.ISO_LOCAL_DATE);
exr = imf.getExchangeRate(ConversionQueryBuilder.of().setBaseCurrency("EUR").setTermCurrency("USD").set(LocalDate.class, date).build());
System.out.println(exr.getFactor() + " ==" + (System.currentTimeMillis()-start));
Here exr.getFactor() method gives the exchange rate for the given date, but its getting hanged at a state for hours.
PF log at which its hanging.
May 27, 2021 4:59:26 PM org.javamoney.moneta.spi.loader.LoadDataLoaderService execute
INFO: Read data from: [https://www.imf.org/external/np/fin/data/rms_five.aspx?tsvflag=Y]
May 27, 2021 4:59:26 PM org.javamoney.moneta.convert.imf.IMFAbstractRateProvider newDataLoaded
INFO: Loaded IMFHistoricRateProvider exchange rates for days:50
May 27, 2021 4:59:26 PM org.javamoney.moneta.spi.loader.LoadDataLoaderService execute
INFO: New data successfully loaded from: [https://www.imf.org/external/np/fin/data/rms_five.aspx?tsvflag=Y]
It should give exchange rate from EUR to USD for the X local date from past.
Reference : https://dzone.com/articles/looking-java-9-money-and (Exchange rates)
I have change the dependence from moneta to more specific exchange rate provider moneta-convert-ecb
Also changed
to
All though this fix worked but it is just changing of provider from IMF to ECB.
Note : IMF was still behaving same.