`
阅读更多

springCloud zookeeper整合,Java Zookeeper微服务整合

 

================================

©Copyright 蕃薯耀 2021-03-08

http://fanshuyao.iteye.com/

 

一、Zookeeper的安装和使用

详情见:

 

https://www.iteye.com/blog/fanshuyao-2517221

 

二、springCloud zookeeper整合-服务提供者

1、pom.xml引入依赖

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
	<version>2.2.4.RELEASE</version>
</dependency>

<dependency>
	<groupId>cn.hutool</groupId>
	<artifactId>hutool-all</artifactId>
	<version>5.4.4</version>
</dependency>

 

 

2、application.properties文件配置

server.port=8611

#zookeeper的服务区分大小写
spring.application.name=SPRINGCLOUD-ZK-CLIENT-SERVICE
#zookeeper连接地址
spring.cloud.zookeeper.connect-string=192.168.170.14:2181
#服务实例ID
spring.cloud.zookeeper.discovery.instance-id=${spring.application.name}

 

3、启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringCloudZkClient8611Application {

	public static void main(String[] args) {
		SpringApplication.run(SpringCloudZkClient8611Application.class, args);
	}

}

 

 

 

4、服务提供类

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ZkClientController {

	@Value("${server.port}")
	private String serverPort;
	
	@RequestMapping("/zk")
	public Result zk() {
		return Result.ok("端口:" + serverPort);
	}
}

 

 

 

5、返回结果类

import java.util.Date;

import cn.hutool.core.date.DateUtil;

public class Result {
	
	public static final String SUCCESS = "操作成功。";
	public static final String FAILURE = "操作失败!";
	
	private boolean result;
	private String timestamp;
	private String msg;
	private Object datas;
	
	private Result() {}
	
	public static Result ok() {
		return Result.ok(SUCCESS, null);
	}
	
	
	public static Result ok(Object datas) {
		return Result.ok(SUCCESS, datas);
	}
	
	
	public static Result okMsg(String msg) {
		return Result.ok(msg, null);
	}
	
	
	public static Result ok(String msg, Object datas) {
		Result result = new Result();
		result.setResult(true);
		result.setTimestamp(DateUtil.formatDateTime(new Date()));
		
		if(msg == null || msg == "" || msg.trim() == "") {
			result.setMsg(SUCCESS);
		}else {
			result.setMsg(msg);
		}
		
		result.setDatas(datas);
		return result;
	}
	
	public static Result fail() {
		return Result.fail(FAILURE, null);
	}
	
	
	public static Result failMsg(String msg) {
		return Result.fail(msg, null);
	}
	
	
	public static Result fail(Object datas) {
		return Result.fail(FAILURE, datas);
	}
	
	public static Result fail(String msg, Object datas) {
		Result result = new Result();
		result.setResult(false);
		result.setTimestamp(DateUtil.formatDateTime(new Date()));
		
		if(msg == null || msg == "" || msg.trim() == "") {
			result.setMsg(FAILURE);
		}else {
			result.setMsg(msg);
		}
		result.setDatas(datas);
		return result;
	}
	
	public boolean isResult() {
		return result;
	}
	public void setResult(boolean result) {
		this.result = result;
	}
	public String getTimestamp() {
		return timestamp;
	}

	public void setTimestamp(String timestamp) {
		this.timestamp = timestamp;
	}

	public String getMsg() {
		return msg;
	}
	public void setMsg(String msg) {
		this.msg = msg;
	}
	public Object getDatas() {
		return datas;
	}
	public void setDatas(Object datas) {
		this.datas = datas;
	}
	

	public static void main(String[] args) {
		
	}

}

 

 

三、springCloud zookeeper整合-服务消费者

 

1、pom.xml引入依赖

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
	<version>2.2.4.RELEASE</version>
</dependency>

<dependency>
	<groupId>cn.hutool</groupId>
	<artifactId>hutool-all</artifactId>
	<version>5.4.4</version>
</dependency>

 

 

2、application.properties配置

 

server.port=8621

spring.application.name=springCloud-zk-web
spring.cloud.zookeeper.connect-string=192.168.170.14:2181
spring.cloud.zookeeper.discovery.instance-id=${spring.application.name}

 

3、启动类

 

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringCloudZkWeb8621Application {

	public static void main(String[] args) {
		SpringApplication.run(SpringCloudZkWeb8621Application.class, args);
	}

}

 

4、RestTemplate配置类

 

 

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RestConfig {

	//@LoadBalanced实现负载均衡
	@Bean
	@LoadBalanced
	public RestTemplate restTemplate() {
		return new RestTemplate();
	}
}

 

 

5、Controller请求类

 

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class ZkController {

	//zookeeper的服务区分大小写:No instances available for SPRINGCLOUD-ZK-CLIENT-SERVICE
	private String serviceUrl = "http://SPRINGCLOUD-ZK-CLIENT-SERVICE";
	
	@Autowired
	private RestTemplate restTemplate;
	
	@RequestMapping(value="/getzk", produces = MediaType.APPLICATION_JSON_VALUE)
	public Result getzk() {
		Result result = restTemplate.getForObject(serviceUrl + "/zk", Result.class);
		return result;
	}
}

 

 

 

6、结果返回类(省略,见上面服务提供者结果返回类)

 

 

(如果文章对您有所帮助,欢迎捐赠,^_^)

 

================================

©Copyright 蕃薯耀 2021-03-08

 

http://fanshuyao.iteye.com/

1
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics