this topic is related to https://github.com/apache/incubator-dubbo/pull/2228

What is the purpose of the change

Support tag router feature for dubbo.

some pain points



fact1: some applications changed at the same time in different branch,like 
A,B,C.

fact2: some applications didn't change ,but deploy repeatedly??like D,E.

fact3: if a new feature need to be tested, all 5 application need to be 
deployed.

fact4: isolation by feature is not friendly to parallel development.

use tag



fact: changed applications are incremental deployment

some cases



usage

consumer
RpcContext.getContext().setAttachment("request.tag","red"); 
i suggest you can use filter or SPI to set this attachment, notice that 
RpcContext is bound to Thread.

provider
    @Bean     public ApplicationConfig applicationConfig() {         
ApplicationConfig applicationConfig = new ApplicationConfig();         
applicationConfig.setName("provider-book");         // instruct tag router      
   Map<String,String> parameters = new HashMap<>();         
parameters.put(Constants.ROUTER_KEY, "tag");         
applicationConfig.setParameters(parameters);         return applicationConfig;  
   } 
Brief changelog

add unit property for dubbo.xsd.

add TagRouter,TagRouterFactory.

add SPI statement for adding TagRouter automatically.

fix a small bug(may be not) in 
org.apache.dubbo.registry.integration.RegistryDirectory#route??exclude runtime 
routers, avoid to filter some runtime invokers.

Verifying this change

Here is more detail about Unit Test:
org.apache.dubbo.rpc.cluster.router.tag.TagRouterTest
I have verified that the unit test has been correct and passed.

Here is more detail about a Integration Test:
clone the repository 
https://github.com/lexburner/Dubbo-Sample-TagRouter.git,can see the route tag 
feature.

Follow this checklist to help us incorporate your contribution quickly and 
easily:

 Make sure there is a GITHUB_issue filed for the change (usually before you 
start working on it). Trivial changes like typos do not require a GITHUB issue. 
Your pull request should address just this issue, without pulling in other 
changes - one PR resolves one issue.

 Format the pull request title like [Dubbo-XXX] Fix UnknownException when host 
config not exist #XXX. Each commit in the pull request should have a meaningful 
subject line and body.

 Write a pull request description that is detailed enough to understand what 
the pull request does, how, and why.

 Write necessary unit-test to verify your logic correction, more mock a little 
better when cross module dependency exist. If the new feature or significant 
change is committed, please remember to add integration-test in test module.

 Run mvn clean install -DskipTests & mvn clean test-compile 
failsafe:integration-test to make sure unit-test and integration-test pass.

 If this contribution is large, please follow the Software Donation Guide.

Reply via email to