`
raymond.chen
  • 浏览: 1437379 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

服务提供者和消费者

 
阅读更多

一、服务提供者

    1、pom.xml文件关键配置

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.0.7.RELEASE</version>
	<relativePath/>
</parent>

<properties>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
	<java.version>1.8</java.version>
</properties>

<dependencies>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-actuator</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-devtools</artifactId>
		<optional>true</optional>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>
</dependencies>

<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-dependencies</artifactId>
			<version>Finchley.RELEASE</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

<build>
  <plugins>
	  <plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
	  </plugin>
	  
	  <plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<configuration>
				<source>1.8</source>
				<target>1.8</target>
			</configuration>
	   </plugin>
  </plugins>
</build>

 

    2、application.properties文件关键配置

spring.application.name=service-provider-1
server.port=8001

eureka.instance.hostname=${spring.cloud.client.ip-address}
eureka.instance.instance-id=${spring.cloud.client.ip-address}:${server.port}
#eureka.instance.prefer-ip-address=true

eureka.client.service-url.defaultZone=http://192.168.134.134:7001/eureka/
#eureka.client.service-url.defaultZone=http://root:123456@192.168.134.134:7001/eureka/

 

    3、启动类

@EnableEurekaClient
@SpringBootApplication
public class Main {
	public static void main(String[] args) {
		SpringApplication.run(Main.class, args);
	}
}

 

    4、Controller类

@RestController
@RequestMapping("/user")
public class UserController {
	@GetMapping("/{id}")
	public String addUser(@PathVariable(value="id") Long id){
		return "provider >> id=" + id;
	}

	@GetMapping("/query")
	public String query(@RequestParam(value="name") String name){
		return "provider >> name=" + name;
	}
	
	@PostMapping("/add")
	public User add(@RequestBody Address address){
		System.out.println(address.getProvince() + ", " + address.getCity());
		User user = new User();
		user.setId(100L);
		user.setUsername("uid");
		user.setPassword("pwd");
		return user;
	}
}

 

二、服务消费者

    1、pom.xml文件的关键配置

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.0.7.RELEASE</version>
	<relativePath/>
</parent>

<properties>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
	<java.version>1.8</java.version>
</properties>

<dependencies>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-openfeign</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-actuator</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-devtools</artifactId>
		<optional>true</optional>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>
</dependencies>

<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-dependencies</artifactId>
			<version>Finchley.RELEASE</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

<build>
  <plugins>
	  <plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
	  </plugin>
	  
	  <plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<configuration>
				<source>1.8</source>
				<target>1.8</target>
			</configuration>
	   </plugin>
  </plugins>
</build>

 

    2、application.properties文件配置

spring.application.name=service-consumer-1
server.port=9001

eureka.instance.hostname=${spring.cloud.client.ip-address}
eureka.instance.instance-id=${spring.cloud.client.ip-address}:${server.port}

eureka.client.service-url.defaultZone=http://192.168.134.134:7001/eureka/
#eureka.client.service-url.defaultZone=http://root:123456@192.168.134.134:7001/eureka/

 

    3、启动类

        客户端服务调用采用Feign组件,需要在启动类引入 @EnableFeignClients 注解类。

@EnableFeignClients
@SpringBootApplication
public class Main {
	public static void main(String[] args) {
		SpringApplication.run(Main.class, args);
	}
}

 

    4、编写Feign客户端接口类

@FeignClient(name="service-provider-1") //name值要与服务提供者工程中application.properties文件的spring.application.name属性值一致
@RequestMapping("/user")
public interface ServiceRemote {
	//接口方法的结构要与服务提供者Controller定义的一致
	@GetMapping("/{id}")
	String addUser(@PathVariable(value="id") Long id);
	
	@GetMapping("/query")
	String query(@RequestParam(value="name") String name);
	
	@PostMapping("/add")
	User add(@RequestBody Address address);
}

 

    5、Controller类

        在Controller类引入Feign客户端接口类,调用接口类的方法,Feign组件底层负责服务提供者方法的调用。

@RestController
public class User3Controller {
	@Autowired
    ServiceRemote serviceRemote;
	
	@GetMapping("/consumer")
	public String test(){
		String result = serviceRemote.addUser(22L);
		System.out.println("result=" + result);

		result = serviceRemote.query("cjm");
		System.out.println("result=" + result);
		
		Address address = new Address();
		address.setProvince("GuangDong");
		address.setCity("GuangZhou");
		
		User user = serviceRemote.add(address);
		System.out.println(user.getId() + ", " + user.getUsername() + ", " + user.getPassword());
		
		return "ok";
	}
}

 

分享到:
评论

相关推荐

    应用Spring Cloud创建一个服务提供者和消费者

    7. **测试应用**:启动服务提供者和消费者,然后通过服务消费者调用服务提供者的接口。你可以看到服务消费者能够成功地找到并调用服务提供者。 除了基本的实现,你还可以考虑添加其他Spring Cloud组件,如Zuul或...

    dubbo提供者和消费者例子

    首先,我们要了解在 Dubbo 中的核心角色——服务提供者(Provider)和服务消费者(Consumer)。服务提供者是拥有服务的实体,它对外发布服务,而服务消费者则需要调用这些服务。在实际应用中,服务提供者通常部署在...

    Dubbo服务提供者以及消费者实例

    3. **处理结果**: 调用完成后,服务消费者接收到服务提供者返回的结果,根据业务需求进行后续处理。 在这个实例中,可能包含了服务提供者和消费者的相关代码,例如服务接口、实现类、配置文件以及启动脚本等。这些...

    dubbo提供者消费者例子

    总之,这个"Dubbo提供者消费者例子"是学习和理解Dubbo工作原理和使用方式的一个很好的起点。通过这个实例,你可以了解到如何创建服务提供者和服务消费者,如何配置服务暴露和引用,以及如何进行服务的调用。这对于...

    demo-dubbo 极简 接口api 服务提供者消费组

    本项目"demo-dubbo 极简 接口api 服务提供者消费组"是针对Dubbo的一个简易示例,旨在帮助开发者快速理解和实践Dubbo的核心功能,包括服务提供者(Provider)和服务消费者(Consumer)的接口API。 首先,让我们了解...

    dubbo提供者消费者jar包

    在这个“dubbo2.4版本提供者provider消费者consumer jar包”中,包含了实现Dubbo服务提供者(Provider)和消费者(Consumer)功能的核心类库。 首先,我们要理解Dubbo的核心概念。服务提供者(Provider)是提供服务...

    Apache Dubbo:Dubbo核心概念:服务提供者与消费者

    ### Apache Dubbo:服务提供者与消费者核心概念详解 #### 一、Apache Dubbo概览 **Apache Dubbo**是一款高性能、轻量级的开源微服务框架,最初由阿里巴巴内部开发并在2008年开始使用,随后在2011年开源。自2017年...

    dubbo实现的消费者,提供者的demo

    这个名为"Dubbo实现的消费者,提供者的demo"的项目,旨在通过实例演示如何使用Dubbo来创建服务消费者和服务提供者,并将它们进行模块化的拆分。下面,我们将深入探讨这些关键知识点。 1. **Dubbo架构核心组件**: ...

    dubbo例子(注册中心,消费者,提供者)

    2. **服务消费者(Consumer)**:服务消费者是需要调用服务提供者接口的组件。在本例子中,Consumer在启动时会从Zookeeper获取服务提供者的信息,并根据这些信息动态地进行服务调用。Dubbo支持动态代理,使得Consumer...

    Dubbo搭建HelloWorld-创建服务提供者与消费者示例代码

    - **配置服务消费者**:配置消费者的应用信息,指定服务提供者的地址,以及需要消费的服务接口。 - **引用服务**:在消费者项目中,通过Dubbo的API或注解引用服务提供者提供的`HelloService`接口。 - **编写测试...

    基于注解、SpringBoot的Dubbo提供者消费者DEMO

    2. **服务消费者(Consumer)**:服务消费者则是调用服务提供者接口的客户端。通过`@Reference`注解,我们可以引入远程服务。例如: ```java @Component public class UserController { @Autowired @Reference...

    整合dubbo、maven、spring、mybatis的服务提供者消费者调用错误示例

    本示例中,我们将关注一个典型的问题——服务消费者在调用服务提供者提供的`getUser(int id)`方法时遇到空指针异常。这通常意味着在执行过程中,尝试访问了一个未初始化或为null的对象引用。下面我们将详细探讨这个...

    Java实现dubbo消息提供者及消费者

    本教程将深入探讨如何在Java环境中实现Dubbo的消息提供者(服务提供者)和消费者(服务消费者),以及这两个组件在实际应用中的工作原理。 首先,我们要理解Dubbo的核心概念:服务提供者和服务消费者。服务提供者是...

    dubbodemo:spring+dubbo搭建的dubbo案例,包括接口api、服务提供者和消费者

    在Spring中,消费者可以通过`@Reference`注解或者XML配置文件来引用服务提供者,并且在运行时,Dubbo会自动从注册中心查找并连接到服务提供者,执行远程调用。 4. **注册中心**:Dubbo支持多种注册中心,如...

    spring cloud eureka微服务之——服务注册发现、服务消费者,服务提供者简单实例

    在本实例中,我们没有明确的服务消费者模块,但通常,一个微服务应用中可能存在多个服务消费者,它们依赖Eureka来动态发现并调用服务提供者。 4. **pom.xml**:这是Maven项目的配置文件,包含了项目依赖的库和插件...

    dubbo服务和消费

    本项目基于Maven构建,涵盖了服务提供者(Provider)和服务消费者(Consumer)两个核心组件,旨在为开发者提供一个完整的测试环境,以深入理解Dubbo的工作原理和实践应用。 首先,我们要明确的是,Dubbo的核心概念...

    Dubbo+Zookeeper源码(提供者+消费者实例

    - **服务消费者(Consumer)**:服务消费者根据需要调用服务提供者的接口。在代码中,`Reference`注解用于注入服务,`RpcInvoke`方法用于实际的远程调用。 - **注册中心(Registry)**:Dubbo支持多种注册中心,...

    dubbox生产者和消费者示例代码(含依赖包).zip

    2. **服务消费者代码(Consumer)**:消费者通过 `@Reference` 注解注入服务,实现对服务提供者的调用。同样,也需要配置 Spring 配置文件,设置服务消费者的引用参数。 3. **Spring 配置文件**:XML 文件,用于...

    dubbo消费者的web应用实例

    Dubbo的核心组件包括服务提供者(Provider)、服务消费者(Consumer)、注册中心(Registry)和服务监控(Monitor)。 二、Java Web基础 Java Web应用程序是运行在服务器端的程序,通常用于构建动态网站。它基于...

    SpringCloud分布式微服务项目搭建构造父子模块依赖与实现服务提供者与消费者示例

    SpringCloud分布式微服务项目搭建构造父子模块依赖与实现服务提供者与消费者示例 SpringCloud分布式微服务项目搭建构造父子模块依赖与实现服务提供者与消费者示例 SpringCloud分布式微服务项目搭建构造父子模块依赖...

Global site tag (gtag.js) - Google Analytics