title: Struggling to get SpringCloud Feign to work with external services
body: <p>Using Feign to access services that I register on Eureka is a breeze. I am trying to use Feign to access external services and struggling with the basics.</p>
  
  <p>I am playing with a service on Bluemix however to simplify the problem at hand, I am using a simple service.</p>
  
  <p>My Proxy appears as follows:</p>
  
  <pre><code>//@FeignClient(name = "country-service-client", url = "https://country.io")
  @FeignClient(name = "another-country-service-client", url = "http://restcountries.eu/rest/v2/name/Australia")
  
  public interface SimpleServiceProxy {
  
      //This one works
      @RequestMapping(method = RequestMethod.GET, value = "/names.json", produces = "application/json")
      String getCountries();
  
      //This one does not work... This is used in conjunction where the url in the Fiegn Client annotation reads as - http://restcountries.eu/rest/v2
      @RequestMapping(method = RequestMethod.GET, value = "/name/{country}", produces = "application/json")
      public String getCountryInfo(@PathVariable("country") String country);
  
  
  
       //This one doesn't work either
      //@RequestMapping(method = RequestMethod.GET, value = "/name/Australia", produces = "application/json")
      public String getCountryInfoHardcodedWithinMethod();
  }
  
      //This works however I would want to pass parameters and path variables to the URL
      @RequestMapping(method = RequestMethod.GET, produces = "application/json")
      public String getCountryInfoHardcodedAtFeignClientAnnotation();
  }
  </code></pre>
  
  <p>I have tried a few variants (see the code above) and the last one where the URL is hardcoded at the Feign Client annotation works. The others throw a TimeoutException.</p>
  
  <pre><code>java.util.concurrent.TimeoutException: null
      at com.netflix.hystrix.AbstractCommand.handleTimeoutViaFallback(AbstractCommand.java:958) ~[hystrix-core-1.5.3.jar:1.5.3]
      at com.netflix.hystrix.AbstractCommand.access$400(AbstractCommand.java:59) ~[hystrix-core-1.5.3.jar:1.5.3]
      at com.netflix.hystrix.AbstractCommand$11.call(AbstractCommand.java:573) ~[hystrix-core-1.5.3.jar:1.5.3]
      at com.netflix.hystrix.AbstractCommand$11.call(AbstractCommand.java:565) ~[hystrix-core-1.5.3.jar:1.5.3]
      at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.onError(OperatorOnErrorResumeNextViaFunction.java:139) ~[rxjava-1.1.5.jar:1.1.5]
      at rx.internal.operators.OperatorDoOnEach$1.onError(OperatorDoOnEach.java:71) ~[rxjava-1.1.5.jar:1.1.5]
      at rx.internal.operators.OperatorDoOnEach$1.onError(OperatorDoOnEach.java:71) ~[rxjava-1.1.5.jar:1.1.5]
      at com.netflix.hystrix.AbstractCommand$HystrixObservableTimeoutOperator$1.run(AbstractCommand.java:1099) ~[hystrix-core-1.5.3.jar:1.5.3]
      at com.netflix.hystrix.strategy.concurrency.HystrixContextRunnable$1.call(HystrixContextRunnable.java:41) ~[hystrix-core-1.5.3.jar:1.5.3]
      at com.netflix.hystrix.strategy.concurrency.HystrixContextRunnable$1.call(HystrixContextRunnable.java:37) ~[hystrix-core-1.5.3.jar:1.5.3]
      at com.netflix.hystrix.strategy.concurrency.HystrixContextRunnable.run(HystrixContextRunnable.java:57) ~[hystrix-core-1.5.3.jar:1.5.3]
      at com.netflix.hystrix.AbstractCommand$HystrixObservableTimeoutOperator$2.tick(AbstractCommand.java:1116) ~[hystrix-core-1.5.3.jar:1.5.3]
      at com.netflix.hystrix.util.HystrixTimer$1.run(HystrixTimer.java:99) ~[hystrix-core-1.5.3.jar:1.5.3]
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_112]
      at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) ~[na:1.8.0_112]
      at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) ~[na:1.8.0_112]
      at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) ~[na:1.8.0_112]
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_112]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_112]
      at java.lang.Thread.run(Thread.java:745) [na:1.8.0_112]
  </code></pre>
  
  <p>I am puzzled and trying to figure things out. I want to get the hardcoded methods working before trying to figure out why the PathVariables aren't working.</p>
  
  <p>What am I missing? (or doing incorrectly here)?</p>