Giter Club home page Giter Club logo

spring-cloud-ribbon-extensions's Introduction

❗Must Have❗ Enhance your micro-service testing, maintenance & overall development productivity.

Spring Cloud Ribbon Extensions is a set of load balancing rules that chooses which server to target. It comes with handy features for easy integration, configuration and customization.

Build Status Codecov Coverage Codacy

SonarCloud Reliability SonarCloud Security SonarCloud Squale SonarCloud Coverage SonarCloud Duplication

CoL Maven Central Javadocs

GitHub license GitHub issues GitHub network/members

Requirements 2.0.0

  • java 8
  • spring boot 1.5.x
  • spring cloud Daslton.

Requirements 2.x.x

  • java 8
  • spring boot 2.0.x
  • spring cloud Finchley

Compatibility

  • spring cloud netflix ribbon.
  • spring cloud netflix eureka.
  • spring cloud netflix zuul.
  • spring cloud netflix hystrix.
  • spring cloud openfeign.
  • spring and java executors.
  • spring stomp.
  • jms.

Features

Routing Rules.

Zone Affinity

@EnableRibbonZoneAffinity: Enables routing to the same zone: see the tests for concrete usage and configurations.

Designed mainly for micro-services that should calls others in the same zone.

Favorite Zone 💎

@EnableRibbonFavoriteZone: Enables routing to a favorite zone: see the tests for concrete usage and configurations.

Designed mainly for testing a micro-service among an existing micro-service architecture without disruption. This is the feature that triggered this project.

Strict Metadata Matcher

@EnableRibbonStrictMetadataMatcher: Enables routing to servers that have a set of metadata: see the tests for concrete usage and configurations.

Designed to target a specific micro-service that holds a point to point connection with an external system (like FIX,...)

Requires Eureka.

Dynamic Metadata Matcher 💎

@EnableRibbonDynamicMetadataMatcher: Enables routing against a dynamic key: see the tests for concrete usage and configurations.

Designed to target a specific micro-services that holds multiple point to point connections with many external systems (like FIX,...)

Requires Eureka.

Context Propagation 💎

@EnableContextPropagation: Enables sharing the execution context through all the micro-services: see the tests for concrete usage and configurations.

Designed to propagate the execution context across the micro-services architecture.

What does it support:

  • Transport: http, jms, stomp.
  • Async: java, spring, Hystrix.
  • Zuul

⚠️You should use only lower case key names (http header limitation).

Eureka:exclamation: Let's enter a world of easy development and testing with micro-service architecture.

  • Developers are able to deploy & debug their own micro-service and get back any request they have initiated disregarding the entry point and without being annoyed by the requests they have not initiated.
  • Deploying in multi region-and let our clients (that have no knowledge of eureka, ribbon, zuul) choose the zone they prefer to target.
  • And other things that I have not thought about...

Illustration

Setup

maven

<dependency>
  <groupId>com.github.enadim</groupId>
  <artifactId>spring-cloud-ribbon-extensions</artifactId>
  <version>2.0.0</version>
</dependency>

gradle

dependencies {
    compile 'com.github.enadim:spring-cloud-ribbon-extensions:2.0.0'
}

Contribution

Any help is welcome. 👌

spring-cloud-ribbon-extensions's People

Contributors

enadim avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

spring-cloud-ribbon-extensions's Issues

When i use extensions the consumer can not start up

My springcloud environment is
springcloud version : Finchley.RELEASE

First I have add dependency like this

com.github.enadim
spring-cloud-ribbon-extensions
2.0.0

Then create RibbonClientsConfig like this
@configuration
@EnableRibbonStrictMetadataMatcher
public class RibbonClientsConfig {

}

Last create start up class like this

@RibbonClients(defaultConfiguration = RibbonClientsConfig.class)
@EnableDiscoveryClient
@SpringBootApplication
@EnableEurekaClient
@EnableContextPropagation
public class ConsumerApplication {

@Bean
@LoadBalanced
RestTemplate restTemplate(){
	return new RestTemplate();
}

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

}

After finish the three setps i start up the startup class but it can not startup and the logs is


APPLICATION FAILED TO START


Description:

Parameter 0 of method strictMetadataMatcher in com.github.enadim.spring.cloud.ribbon.support.StrictMetadataMatcherConfig required a bean of type 'com.netflix.client.config.IClientConfig' that could not be found.

Action:

Consider defining a bean of type 'com.netflix.client.config.IClientConfig' in your configuration.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.