diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryProperties.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryProperties.java index 802281b8..721040ea 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryProperties.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulDiscoveryProperties.java @@ -66,6 +66,8 @@ public class ConsulDiscoveryProperties { private String instanceId; + private String scheme = "http"; + public String getHostname() { return this.preferIpAddress ? this.ipAddress : this.hostname; } diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulLifecycle.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulLifecycle.java index dc41f9ca..5c8e81c2 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulLifecycle.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulLifecycle.java @@ -23,6 +23,7 @@ import org.springframework.cloud.client.discovery.AbstractDiscoveryLifecycle; import com.ecwid.consul.v1.ConsulClient; import com.ecwid.consul.v1.agent.model.NewService; +import org.springframework.util.Assert; /** * @author Spencer Gibb @@ -56,6 +57,7 @@ public class ConsulLifecycle extends AbstractDiscoveryLifecycle { @Override protected void register() { + Assert.notNull(service.getPort(), "service.port has not been set"); String appName = getAppName(); String id; if (properties.getInstanceId() == null) { @@ -74,8 +76,9 @@ public class ConsulLifecycle extends AbstractDiscoveryLifecycle { if (properties.getHealthCheckUrl() != null) { check.setHttp(properties.getHealthCheckUrl()); } else { - check.setHttp(String.format("http://%s:%s%s", properties.getHostname(), - service.getPort(), properties.getHealthCheckPath())); + check.setHttp(String.format("%s://%s:%s%s", properties.getScheme(), + properties.getHostname(), service.getPort(), + properties.getHealthCheckPath())); } check.setInterval(properties.getHealthCheckInterval()); //TODO support http check timeout diff --git a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulLifecycleCustomizedPropsTests.java b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulLifecycleCustomizedPropsTests.java index c4f1f6d6..6255d0f7 100644 --- a/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulLifecycleCustomizedPropsTests.java +++ b/spring-cloud-consul-discovery/src/test/java/org/springframework/cloud/consul/discovery/ConsulLifecycleCustomizedPropsTests.java @@ -46,7 +46,8 @@ import com.ecwid.consul.v1.agent.model.Service; @RunWith(SpringJUnit4ClassRunner.class) @FixMethodOrder(MethodSorters.NAME_ASCENDING) @SpringApplicationConfiguration(classes = TestPropsConfig.class) -@WebIntegrationTest(value = {"spring.application.name=myTestService", "spring.cloud.consul.discovery.instanceId=myTestService1"}, randomPort = true) +@WebIntegrationTest(value = { "spring.application.name=myTestService", + "spring.cloud.consul.discovery.instanceId=myTestService1" }, randomPort = true) public class ConsulLifecycleCustomizedPropsTests { @Autowired