diff options
author | HuabingZhao <zhao.huabing@zte.com.cn> | 2017-08-17 19:39:44 +0800 |
---|---|---|
committer | HuabingZhao <zhao.huabing@zte.com.cn> | 2017-08-17 19:40:21 +0800 |
commit | 798ccdc010e4628f6638602a4426444a68c0c52a (patch) | |
tree | 418cd6a1976bde54b16f6e94057b81cd15a1479f /src/main/java/org/onap/msb/sdk/httpclient/lb/RoundRobinLBStrategy.java | |
parent | b91bf4fe6611e74f2c527c339d51e61193ec0a06 (diff) |
msb http client
Issue-Id: MSB-22
Change-Id: I79714244d675e193a0bf6bf64085e76a02e937e3
Signed-off-by: HuabingZhao <zhao.huabing@zte.com.cn>
Diffstat (limited to 'src/main/java/org/onap/msb/sdk/httpclient/lb/RoundRobinLBStrategy.java')
-rw-r--r-- | src/main/java/org/onap/msb/sdk/httpclient/lb/RoundRobinLBStrategy.java | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/main/java/org/onap/msb/sdk/httpclient/lb/RoundRobinLBStrategy.java b/src/main/java/org/onap/msb/sdk/httpclient/lb/RoundRobinLBStrategy.java new file mode 100644 index 0000000..efbd0ba --- /dev/null +++ b/src/main/java/org/onap/msb/sdk/httpclient/lb/RoundRobinLBStrategy.java @@ -0,0 +1,50 @@ +/******************************************************************************* + * Copyright 2017 ZTE, Inc. and others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + ******************************************************************************/ +package org.onap.msb.sdk.httpclient.lb; + +import java.util.concurrent.atomic.AtomicLong; + +import org.onap.msb.sdk.httpclient.ServiceHttpEndPointObject; +import org.onap.msb.sdk.httpclient.exception.RetrofitServiceRuntimeException; + +/** + * @author hu.rui + * + */ +public class RoundRobinLBStrategy implements ILoadBalanceStrategy { + + private AtomicLong invokeCount = new AtomicLong(0); + + /* + * (non-Javadoc) + * + * @see + * com.zte.ums.zenap.httpclient.retrofit.lb.ILoadBalanceStrategy#chooseEndPointObject(com.zte.ums. + * zenap.httpclient.retrofit.lb.LoadBalanceContext) + */ + @Override + public ServiceHttpEndPointObject chooseEndPointObject(LoadBalanceContext lbCtx) { + + long invokecount = invokeCount.getAndIncrement(); + + if (lbCtx.getEndPoints().size() == 0) { + throw new RetrofitServiceRuntimeException("target endPoints is empty"); + } + + int mod = (int) (invokecount % lbCtx.getEndPoints().size()); + + return lbCtx.getEndPoints().get(mod); + } + +} |