enadim / spring-cloud-ribbon-extensions

Ribbon Extensions - Smart Routing
Apache License 2.0
12 stars 16 forks source link
context-propagation eureka extensions hystrix jms metadata microservice rest ribbon routing service-architecture spring spring-cloud-ribbon stomp zone zuul

Spring Cloud Ribbon Extensions v2.0.0 :rocket::microscope:

:exclamation:Must Have:exclamation: 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

Requirements 2.x.x

Compatibility

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 :gem:

@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 :gem:

@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 :gem:

@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:

:warning:You should use only lower case key names (http header limitation).

Combine Favorite Zone & Context Propagation :sparkles:

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

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. :ok_hand: