diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/pom.xml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/pom.xml index a4619053..4e2c6685 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/pom.xml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/pom.xml @@ -95,87 +95,69 @@ ${project.version} - + + + org.springframework.cloud + spring-cloud-starter-alibaba-nacos-discovery + - + + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-client + - - - nacos - - true - - - - - org.springframework.cloud - spring-cloud-starter-alibaba-nacos-discovery - - - - - - eureka - - - - org.springframework.cloud - spring-cloud-starter-netflix-eureka-client - - - - - - - zookeeper - - - - org.springframework.cloud - spring-cloud-starter-zookeeper-discovery - ${spring-cloud-zookeeper.version} - - - org.apache.zookeeper - zookeeper - - - - - + + + org.springframework.cloud + spring-cloud-starter-zookeeper-discovery + ${spring-cloud-zookeeper.version} + + org.apache.zookeeper zookeeper - 3.4.12 - true - - - org.slf4j - slf4j-log4j12 - - - + + + - - org.apache.curator - curator-framework - ${curator.version} - - - + + org.apache.zookeeper + zookeeper + 3.4.12 + true + + + org.slf4j + slf4j-log4j12 + + + - - consul - - - - org.springframework.cloud - spring-cloud-starter-consul-discovery - ${spring-cloud-consul.version} - - - + + org.apache.curator + curator-framework + ${curator.version} + - + + + org.springframework.cloud + spring-cloud-starter-consul-discovery + ${spring-cloud-consul.version} + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + \ No newline at end of file diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/pom.xml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/pom.xml index cc01b03e..2e176354 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/pom.xml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/pom.xml @@ -21,6 +21,18 @@ spring-boot-starter-web + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + + + org.springframework.retry + spring-retry + + org.springframework.cloud @@ -28,11 +40,14 @@ ${project.version} - - - org.springframework.cloud - spring-cloud-starter-openfeign - - + + + + + org.springframework.boot + spring-boot-maven-plugin + + + \ No newline at end of file diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/src/main/java/org/springframework/cloud/alibaba/dubbo/bootstrap/DubboSpringCloudConsumerBootstrap.java b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/src/main/java/org/springframework/cloud/alibaba/dubbo/bootstrap/DubboSpringCloudConsumerBootstrap.java index 8c2a0c9e..0fb73298 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/src/main/java/org/springframework/cloud/alibaba/dubbo/bootstrap/DubboSpringCloudConsumerBootstrap.java +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/src/main/java/org/springframework/cloud/alibaba/dubbo/bootstrap/DubboSpringCloudConsumerBootstrap.java @@ -17,6 +17,7 @@ package org.springframework.cloud.alibaba.dubbo.bootstrap; import org.apache.dubbo.config.annotation.Reference; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.ApplicationRunner; @@ -25,6 +26,7 @@ import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.cloud.alibaba.dubbo.annotation.DubboTransported; import org.springframework.cloud.alibaba.dubbo.service.RestService; import org.springframework.cloud.alibaba.dubbo.service.User; +import org.springframework.cloud.alibaba.dubbo.service.UserService; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.cloud.openfeign.EnableFeignClients; @@ -52,7 +54,10 @@ import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE; @EnableFeignClients public class DubboSpringCloudConsumerBootstrap { - @Reference(version = "1.0.0") + @Reference + private UserService userService; + + @Reference(version = "1.0.0", protocol = "dubbo") private RestService restService; @Autowired @@ -94,7 +99,7 @@ public class DubboSpringCloudConsumerBootstrap { } @FeignClient("${provider.application.name}") - @DubboTransported() + @DubboTransported(protocol = "dubbo") public interface DubboFeignRestService { @GetMapping(value = "/param") @@ -118,7 +123,28 @@ public class DubboSpringCloudConsumerBootstrap { } @Bean - public ApplicationRunner paramRunner() { + public ApplicationRunner userServiceRunner() { + return arguments -> { + + User user = new User(); + user.setId(1L); + user.setName("小马哥"); + user.setAge(33); + + // save User + System.out.printf("UserService.save(%s) : %s\n", user, userService.save(user)); + + // find all Users + System.out.printf("UserService.findAll() : %s\n", user, userService.findAll()); + + // remove User + System.out.printf("UserService.remove(%d) : %s\n", user.getId(), userService.remove(user.getId())); + + }; + } + + @Bean + public ApplicationRunner callRunner() { return arguments -> { // To call /path-variables @@ -191,7 +217,7 @@ public class DubboSpringCloudConsumerBootstrap { // Dubbo Service call System.out.println(restService.requestBodyMap(data, "Hello,World")); // Spring Cloud Open Feign REST Call (Dubbo Transported) -// System.out.println(dubboFeignRestService.requestBody("Hello,World", data)); + System.out.println(dubboFeignRestService.requestBody("Hello,World", data)); // Spring Cloud Open Feign REST Call System.out.println(feignRestService.requestBody("Hello,World", data)); diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/src/main/resources/application.yaml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/src/main/resources/application.yaml index 263a5699..7244e451 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/src/main/resources/application.yaml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/src/main/resources/application.yaml @@ -1,12 +1,18 @@ dubbo: registry: # The Spring Cloud Dubbo's registry extension + ## the default value of dubbo-provider-services is "*", that means to subscribe all providers, + ## thus it's optimized if subscriber specifies the required providers. address: spring-cloud://localhost -# The traditional Dubbo's registry +# The traditional Dubbo's registry also is supported # address: zookeeper://127.0.0.1:2181 + cloud: + # The subscribed services in consumer side + subscribed-services: ${provider.application.name} + server: port: 0 provider: application: - name: spring-cloud-alibaba-dubbo-web-provider \ No newline at end of file + name: spring-cloud-alibaba-dubbo-provider \ No newline at end of file diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/pom.xml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/pom.xml index 574f917e..68fd8497 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/pom.xml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/pom.xml @@ -17,6 +17,13 @@ + + + javax.servlet + javax.servlet-api + 3.1.0 + + org.springframework @@ -73,4 +80,13 @@ + + + + org.springframework.boot + spring-boot-maven-plugin + + + + \ No newline at end of file diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/src/main/java/org/springframework/cloud/alibaba/dubbo/bootstrap/DubboSpringCloudProviderBootstrap.java b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/src/main/java/org/springframework/cloud/alibaba/dubbo/bootstrap/DubboSpringCloudProviderBootstrap.java index 4606a190..8e6ed4e9 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/src/main/java/org/springframework/cloud/alibaba/dubbo/bootstrap/DubboSpringCloudProviderBootstrap.java +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/src/main/java/org/springframework/cloud/alibaba/dubbo/bootstrap/DubboSpringCloudProviderBootstrap.java @@ -16,6 +16,7 @@ */ package org.springframework.cloud.alibaba.dubbo.bootstrap; +import org.springframework.boot.WebApplicationType; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @@ -30,6 +31,7 @@ public class DubboSpringCloudProviderBootstrap { public static void main(String[] args) { new SpringApplicationBuilder(DubboSpringCloudProviderBootstrap.class) .properties("spring.profiles.active=nacos") + .web(WebApplicationType.NONE) .run(args); } } diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/src/main/java/org/springframework/cloud/alibaba/dubbo/service/InMemoryUserService.java b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/src/main/java/org/springframework/cloud/alibaba/dubbo/service/InMemoryUserService.java new file mode 100644 index 00000000..cd1aa8b3 --- /dev/null +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/src/main/java/org/springframework/cloud/alibaba/dubbo/service/InMemoryUserService.java @@ -0,0 +1,47 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.cloud.alibaba.dubbo.service; + +import org.apache.dubbo.config.annotation.Service; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +/** + * In-Memory {@link UserService} implementation + */ +@Service(protocol = "dubbo") +public class InMemoryUserService implements UserService { + + private Map usersRepository = new HashMap<>(); + + @Override + public boolean save(User user) { + return usersRepository.put(user.getId(), user) == null; + } + + @Override + public boolean remove(Long userId) { + return usersRepository.remove(userId) != null; + } + + @Override + public Collection findAll() { + return usersRepository.values(); + } +} diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/pom.xml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/pom.xml index e90b5f28..dcc5144b 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/pom.xml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/pom.xml @@ -16,6 +16,12 @@ + + + org.springframework.boot + spring-boot-starter-actuator + + org.springframework.boot spring-boot-starter-web @@ -30,4 +36,13 @@ + + + + org.springframework.boot + spring-boot-maven-plugin + + + + \ No newline at end of file diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/src/main/java/org/springframework/cloud/alibaba/dubbo/service/InMemoryUserService.java b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/src/main/java/org/springframework/cloud/alibaba/dubbo/service/InMemoryUserService.java new file mode 100644 index 00000000..cd1aa8b3 --- /dev/null +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/src/main/java/org/springframework/cloud/alibaba/dubbo/service/InMemoryUserService.java @@ -0,0 +1,47 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.cloud.alibaba.dubbo.service; + +import org.apache.dubbo.config.annotation.Service; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +/** + * In-Memory {@link UserService} implementation + */ +@Service(protocol = "dubbo") +public class InMemoryUserService implements UserService { + + private Map usersRepository = new HashMap<>(); + + @Override + public boolean save(User user) { + return usersRepository.put(user.getId(), user) == null; + } + + @Override + public boolean remove(Long userId) { + return usersRepository.remove(userId) != null; + } + + @Override + public Collection findAll() { + return usersRepository.values(); + } +} diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/src/main/resources/application.yaml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/src/main/resources/application.yaml index a890294c..e6cc2969 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/src/main/resources/application.yaml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/src/main/resources/application.yaml @@ -16,4 +16,10 @@ feign: enabled: true server: - port: 8080 \ No newline at end of file + port: 8888 + +management: + endpoints: + web: + exposure: + include: dubborestmetadata \ No newline at end of file diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/src/main/resources/bootstrap.yaml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/src/main/resources/bootstrap.yaml index fd82247b..0d8dfca9 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/src/main/resources/bootstrap.yaml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/src/main/resources/bootstrap.yaml @@ -1,6 +1,6 @@ spring: application: - name: spring-cloud-alibaba-dubbo-web-provider + name: spring-cloud-alibaba-dubbo-provider main: allow-bean-definition-overriding: true diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-sample-api/src/main/java/org/springframework/cloud/alibaba/dubbo/service/UserService.java b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-sample-api/src/main/java/org/springframework/cloud/alibaba/dubbo/service/UserService.java new file mode 100644 index 00000000..471f07bf --- /dev/null +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-sample-api/src/main/java/org/springframework/cloud/alibaba/dubbo/service/UserService.java @@ -0,0 +1,33 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.cloud.alibaba.dubbo.service; + +import java.util.Collection; + +/** + * {@link User} Service + * + * @author Mercy + */ +public interface UserService { + + boolean save(User user); + + boolean remove(Long userId); + + Collection findAll(); +}