From 515028d0a713c87f5179e2a84d986a8689fa5cdc Mon Sep 17 00:00:00 2001 From: wusheng Date: Tue, 22 Dec 2015 10:29:06 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0=E5=8F=91=E9=80=81=E5=89=AF?= =?UTF-8?q?=E6=9C=AC=E7=9A=84=E4=BB=A3=E7=A0=81=E3=80=82=E4=BF=9D=E8=AF=81?= =?UTF-8?q?=E5=89=AF=E6=9C=AC=E8=87=B3=E5=B0=91=E5=8F=91=E9=80=81=E4=B8=A4?= =?UTF-8?q?=E4=BB=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sender/DataSenderFactoryWithBalance.java | 8 ++++++-- .../skywalking/sender/DataSenderWithCopies.java | 12 +++++++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/sender/DataSenderFactoryWithBalance.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/sender/DataSenderFactoryWithBalance.java index 9cef15a32..602b1e9b7 100644 --- a/skywalking-api/src/main/java/com/ai/cloud/skywalking/sender/DataSenderFactoryWithBalance.java +++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/sender/DataSenderFactoryWithBalance.java @@ -84,7 +84,7 @@ public class DataSenderFactoryWithBalance { // 获取连接 public static IDataSender getSender() { - DataSender readySender = null; + DataSenderWithCopies readySender = new DataSenderWithCopies(maxKeepConnectingSenderSize); while (true) { try { if (usingDataSender.size() == 0) { @@ -98,7 +98,11 @@ public class DataSenderFactoryWithBalance { int index = ThreadLocalRandom.current().nextInt(0, usingDataSender.size()); if (usingDataSender.get(index).getStatus() == DataSender.SenderStatus.READY) { - readySender = usingDataSender.get(index); + while(readySender.append(usingDataSender.get(index))){ + if(++index == usingDataSender.size()){ + index = 0; + } + } break; } diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/sender/DataSenderWithCopies.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/sender/DataSenderWithCopies.java index aabb4147d..823c6c1d9 100644 --- a/skywalking-api/src/main/java/com/ai/cloud/skywalking/sender/DataSenderWithCopies.java +++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/sender/DataSenderWithCopies.java @@ -34,7 +34,17 @@ public class DataSenderWithCopies implements IDataSender{ * 尝试向所有副本发送 */ public boolean send(String data) { - return false; + int successNum = 0; + for(IDataSender sender : senders){ + if(sender.send(data)){ + successNum++; + } + } + if(successNum >= 2){ + return true; + }else{ + return false; + } } }