spring cloud (六) 将一个普通的springcloud项目 非feign或ribbon项目,改造成turbine可聚合监听的项目

改造之前一个项目 service-a

1 pom.xml添加如下

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

完整的pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>Spring-Cloud-Service-A</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>Spring-Cloud-Service-A</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

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

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</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>
        </plugins>
    </build>

</project>

2 启动类添加注解 @EnableHystrix

@SpringBootApplication
@EnableDiscoveryClient
@EnableHystrix
public class SpringCloudServiceAApplication {

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

}

3 配置文件添加如下配置

server.port=8082
spring.application.name=service-a
eureka.client.service-url.defaultZone=http://localhost:8080/eureka/

eureka.instance.metadata-map.cluster=main

management.server.port=9003
management.endpoints.web.exposure.include="*"
management.endpoints.web.cors.allowed-origins="*"
management.endpoints.web.cors.allowed-methods="*"

4 编写一个测试类  添加需要熔断的方法

@RestController
public class HystrixTestC {
@GetMapping("/hget")
@HystrixCommand(fallbackMethod="getFallback")
public String getHystrixTest(String message) {
if("error".equals(message)) {
System.err.println(1/0);
}
return "hello world:"+message;
}
public String getFallback(String message) { // 此时方法的参数 与get()一致
return "hello world 1/0:"+message;
}
}

5 启动项目

6 修改turbine项目中配置文件  加入service-a

server.port=7032
spring.application.name=turbine

eureka.client.service-url.defaultZone=http://127.0.0.1:8080/eureka/

turbine.app-config=feign-consumer,service-a
# dan ge setting
#turbine.cluster-name-expression=new String("default")
#turbine.combine-host-port=true

#ji qun setting
turbine.aggregator.clusterConfig=MAIN
turbine.cluster-name-expression=metadata[‘cluster‘]

7 重启turbine项目

8 访问

服务顺利出现在turbine监控面板上

原文地址:https://www.cnblogs.com/syscn/p/9741097.html

时间: 2024-10-08 22:33:33

spring cloud (六) 将一个普通的springcloud项目 非feign或ribbon项目,改造成turbine可聚合监听的项目的相关文章

java版b2b2c社交电商spring cloud分布式微服务-springcloud应用程序上下文层次结构

如果您从SpringApplication或SpringApplicationBuilder构建应用程序上下文,则将Bootstrap上下文添加为该上下文的父级.这是一个Spring的功能,即子上下文从其父进程继承属性源和配置文件,因此与不使用Spring Cloud Config构建相同上下文相比,“主”应用程序上下文将包含其他属性源.额外的财产来源是: “bootstrap”:如果在Bootstrap上下文中找到任何PropertySourceLocators,则可选CompositePro

Android 网络流量监听开源项目-ConnectionClass源码分析

很多App要做到极致的话,对网络状态的监听是很有必要的,比如在网络差的时候加载质量一般的小图,缩略图,在网络好的时候,加载高清大图,脸书的android 客户端就是这么做的, 当然伟大的脸书也把这部分代码开源出来,今天就来带着大家分析一下脸书的这个开源代码. GitHub 地址https://github.com/facebook/network-connection-class 注意这个项目下载下来以后 会报很多错误,导致很多人运行不了,大家要根据各自电脑不同的情况修改gradle脚本,才能让

spring cloud(六):Zuul的集成

1.概念 Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架.Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门.另外需要理解的概念就是反向代理和负载均衡,反向代理:就是外网向内网请求资源,并把资源返回给客户端,正向代理相反:负载均衡就是多个客户端请求,会如果有多个相同的serviceid,网关则会进行轮询的方式进行访问. 2.搭建 2.1.添加依赖 <dependency> <groupId>org.springframework

Spring Cloud ---- 服务消费与负载均衡(feign)

feign是一个声明式的伪客户端,只需要创建一个接口并且注解,它具有可插拔的特性.feign集合了Ribbon,再与Eurake结合实现服务的注册发现与负载均衡.结合Hystrix,具有熔断功能. 1.使用步骤首先引入feign,eureka, hystrix的jar包 2.启动两次服务提供者 3.配置文件声明注册中心地址,声明端口号,服务名 eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ spring

用nodej和glub-watcher写的监听go 项目自动编译,很鸡肋

glub 一般都是很轻量的编译. go太重了,改一小个部分,就编译的话,多数是编译失败. 而且很消耗性能,还没想到完美的优化办法. 暂时用个定时器 监听2秒,停止1秒,如此循环,会减少些 “无效”的编译 var watch = require('glob-watcher'); var exec = require('child_process').exec; var sys = require('sys'); var matchregs=new Array(9); var godirpath =

(七十六)CoreLocation(二)获取经纬度、速度、方向,进行区域监听

上节说明了如何在iOS7和iOS8上完成授权,并且开始获取位置,这一节介绍获取位置信息的方法. [定位精度] 定位精度有多种选择:根据字面意思即可理解 extern const CLLocationAccuracy kCLLocationAccuracyBestForNavigation; extern const CLLocationAccuracy kCLLocationAccuracyBest; extern const CLLocationAccuracy kCLLocationAccu

spring cloud之服务发现和均衡负载

一.认识 1. Monolith(单体应用)架构 在编译时,这些项目将被打包成为一个个JAR包,并最终合并在一起形成一个WAR包. 最终部署的时候只有一份war包,其他的以jar包的方式依赖来. 缺点:在项目很小的情况下这种单体应用比较简单,但是随着项目越变越大,代码越来越多.就会存在以下缺点. ①编译难,部署难,测试难    ②技术选择难    ③扩展难 单体应用中多个模块的负载不均衡,我们扩容高负载的时候,也把低负载的模块也扩容,极大浪费了资源. 2.MicroService(微服务)架构

用Zookeeper作为Spring cloud的配置中心(转)

本文转自https://blog.csdn.net/CSDN_Stephen/article/details/78856323 Spring Cloud 配置中心的主流实现方式 Spring cloud configSpring cloud zookeeper config以下是这两者的简介 Srping Cloud Config Spring cloud config就是和git(svn)集成来实现配置中心.Spring cloud config分服务端.客户端和git(svn)三部分,服务端

Spring Cloud中Hystrix、Ribbon及Feign的熔断关系

在Spring Cloud中Hystrix.Ribbon以及Feign它们三者之间在处理微服务调用超时从而触发熔断降级的关系是什么? 我们知道在Spring Cloud微服务体系下,微服务之间的互相调用可以通过Feign进行声明式调用,在这个服务调用过程中Feign会通过Ribbon从服务注册中心获取目标微服务的服务器地址列表,之后在网络请求的过程中Ribbon就会将请求以负载均衡的方式打到微服务的不同实例上,从而实现Spring Cloud微服务架构中最为关键的功能即服务发现及客户端负载均衡调