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; + } } }