diff --git a/README.md b/README.md index 9efdc83..31eb77a 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ datarangers-sdk-java 是 [DataFinder](https://www.volcengine.com/product/datafin com.datarangers datarangers-sdk-core - 1.5.12-release + 1.5.13-release ``` diff --git a/datarangers-sdk-core/pom.xml b/datarangers-sdk-core/pom.xml index 2073e14..2930515 100644 --- a/datarangers-sdk-core/pom.xml +++ b/datarangers-sdk-core/pom.xml @@ -5,7 +5,7 @@ datarangers-sdk com.datarangers - 1.5.12-release + 1.5.13-release 4.0.0 jar diff --git a/datarangers-sdk-core/src/main/java/com/datarangers/asynccollector/Consumer.java b/datarangers-sdk-core/src/main/java/com/datarangers/asynccollector/Consumer.java index 8210d27..2e01048 100644 --- a/datarangers-sdk-core/src/main/java/com/datarangers/asynccollector/Consumer.java +++ b/datarangers-sdk-core/src/main/java/com/datarangers/asynccollector/Consumer.java @@ -17,6 +17,8 @@ import org.slf4j.LoggerFactory; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; public class Consumer implements Runnable { @@ -64,8 +66,18 @@ private void sendBatch() throws Exception { List messages = collectorContainer.consume(sdkConfigProperties.getBatchSize(), sdkConfigProperties.getWaitTimeMs()); if (messages != null && messages.size() > 0) { - MessageSenderFactory.getMessageSender(messages.get(0)) - .sendBatch(messages, this.sdkConfigProperties); + // 根据appId 进行分组 + Map> messagesMap = + messages.stream().collect(Collectors.groupingBy(n -> n.getAppMessage().getAppId())); + // 上报 + for (Map.Entry> entry : messagesMap.entrySet()) { + List messageList = entry.getValue(); + if(messageList != null && messageList.size() > 0) { + MessageSenderFactory.getMessageSender(messageList.get(0)) + .sendBatch(messageList, this.sdkConfigProperties); + } + } + } } catch (Throwable e) { e.printStackTrace(); diff --git a/datarangers-sdk-core/src/main/java/com/datarangers/config/Constants.java b/datarangers-sdk-core/src/main/java/com/datarangers/config/Constants.java index 5c1110c..c47d8d5 100644 --- a/datarangers-sdk-core/src/main/java/com/datarangers/config/Constants.java +++ b/datarangers-sdk-core/src/main/java/com/datarangers/config/Constants.java @@ -11,7 +11,7 @@ import java.util.GregorianCalendar; public class Constants { - public static final String SDK_VERSION = "datarangers_sdk_1.5.12-release"; + public static final String SDK_VERSION = "datarangers_sdk_1.5.13-release"; public static DateTimeFormatter FULL_HOUR = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH"); public static DateTimeFormatter FULL_DAY = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); public static final String APP_LOG_PATH = "/sdk/log"; diff --git a/datarangers-sdk-core/src/main/java/com/datarangers/config/DataRangersSDKConfigProperties.java b/datarangers-sdk-core/src/main/java/com/datarangers/config/DataRangersSDKConfigProperties.java index 73a519b..8feb8d5 100644 --- a/datarangers-sdk-core/src/main/java/com/datarangers/config/DataRangersSDKConfigProperties.java +++ b/datarangers-sdk-core/src/main/java/com/datarangers/config/DataRangersSDKConfigProperties.java @@ -23,6 +23,7 @@ public class DataRangersSDKConfigProperties { public String domain; private String path; + private String batchPath; private int threadCount = 20; @@ -293,6 +294,14 @@ public void setPath(String path) { this.path = path; } + public String getBatchPath() { + return batchPath; + } + + public void setBatchPath(String batchPath) { + this.batchPath = batchPath; + } + public ZoneOffset getTimeOffset() { return timeOffset; } diff --git a/datarangers-sdk-core/src/main/java/com/datarangers/sender/MessageSender.java b/datarangers-sdk-core/src/main/java/com/datarangers/sender/MessageSender.java index 53f3f00..c091810 100644 --- a/datarangers-sdk-core/src/main/java/com/datarangers/sender/MessageSender.java +++ b/datarangers-sdk-core/src/main/java/com/datarangers/sender/MessageSender.java @@ -20,10 +20,10 @@ public interface MessageSender { /** * 使用批量上报 - * @param message + * @param messages * @param sdkConfigProperties */ - default void sendBatch(List message, DataRangersSDKConfigProperties sdkConfigProperties) { + default void sendBatch(List messages, DataRangersSDKConfigProperties sdkConfigProperties) { throw new UnsupportedOperationException("Not support batch"); }; } diff --git a/datarangers-sdk-core/src/main/java/com/datarangers/sender/MessageSenderFactory.java b/datarangers-sdk-core/src/main/java/com/datarangers/sender/MessageSenderFactory.java index 230bbb1..aa8c6d0 100644 --- a/datarangers-sdk-core/src/main/java/com/datarangers/sender/MessageSenderFactory.java +++ b/datarangers-sdk-core/src/main/java/com/datarangers/sender/MessageSenderFactory.java @@ -4,6 +4,7 @@ import com.datarangers.message.MessageEnv; import com.datarangers.message.MessageType; import com.datarangers.sender.saas.SaasItemAppMessageSender; +import com.datarangers.sender.saas.SaasMessageSender; import com.datarangers.sender.saas.SaasProfileAppMessageSender; import com.datarangers.sender.saas.SaasServerAppMessageSender; import com.datarangers.sender.saasnative.SaasNativeMessageSender; @@ -25,16 +26,7 @@ public static MessageSender getMessageSender(Message message) { if (MessageEnv.SAAS_NATIVE == messageEnv) { return new SaasNativeMessageSender(); } - MessageType messageType = message.getMessageType(); - switch (messageType) { - case EVENT: - return new SaasServerAppMessageSender(); - case ITEM: - return new SaasItemAppMessageSender(); - case PROFILE: - return new SaasProfileAppMessageSender(); - default: - throw new IllegalArgumentException("Not support message: " + messageType); - } + // saas + return new SaasMessageSender(); } } diff --git a/datarangers-sdk-core/src/main/java/com/datarangers/sender/PrivatizationMessageSender.java b/datarangers-sdk-core/src/main/java/com/datarangers/sender/PrivatizationMessageSender.java index c69156e..e0a8993 100644 --- a/datarangers-sdk-core/src/main/java/com/datarangers/sender/PrivatizationMessageSender.java +++ b/datarangers-sdk-core/src/main/java/com/datarangers/sender/PrivatizationMessageSender.java @@ -23,8 +23,8 @@ public void send(Message message, DataRangersSDKConfigProperties sdkConfigProper } @Override - public void sendBatch(List message, DataRangersSDKConfigProperties sdkConfigProperties) { - List sendMessages = message.stream().map(n -> n.getAppMessage()).collect(Collectors.toList()); + public void sendBatch(List messages, DataRangersSDKConfigProperties sdkConfigProperties) { + List sendMessages = messages.stream().map(n -> n.getAppMessage()).collect(Collectors.toList()); HttpUtils.post(EventConfig.getAppListUrl(), RangersJSONConfig.getInstance().toJson(sendMessages), EventConfig.SEND_HEADER); } } diff --git a/datarangers-sdk-core/src/main/java/com/datarangers/sender/saas/SaasItemAppMessageSender.java b/datarangers-sdk-core/src/main/java/com/datarangers/sender/saas/SaasItemAppMessageSender.java index 626640a..b4c89bd 100644 --- a/datarangers-sdk-core/src/main/java/com/datarangers/sender/saas/SaasItemAppMessageSender.java +++ b/datarangers-sdk-core/src/main/java/com/datarangers/sender/saas/SaasItemAppMessageSender.java @@ -50,4 +50,12 @@ public void send(Message message, DataRangersSDKConfigProperties sdkConfigProper } } + + @Override + public void sendBatch(List message, DataRangersSDKConfigProperties sdkConfigProperties) { + // 接口不支持批量,这里循环处理 + for (Message m : message) { + send(m, sdkConfigProperties); + } + } } diff --git a/datarangers-sdk-core/src/main/java/com/datarangers/sender/saas/SaasMessageSender.java b/datarangers-sdk-core/src/main/java/com/datarangers/sender/saas/SaasMessageSender.java new file mode 100644 index 0000000..48c9172 --- /dev/null +++ b/datarangers-sdk-core/src/main/java/com/datarangers/sender/saas/SaasMessageSender.java @@ -0,0 +1,53 @@ +package com.datarangers.sender.saas; + +import com.datarangers.config.DataRangersSDKConfigProperties; +import com.datarangers.message.Message; +import com.datarangers.message.MessageType; +import com.datarangers.sender.MessageSender; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author zhangpeng.spin + */ +public class SaasMessageSender implements MessageSender { + private Map senders = new HashMap<>(); + + public SaasMessageSender() { + senders.put(MessageType.EVENT, new SaasServerAppMessageSender()); + senders.put(MessageType.PROFILE, new SaasProfileAppMessageSender()); + senders.put(MessageType.ITEM, new SaasItemAppMessageSender()); + } + + @Override + public void send(Message message, DataRangersSDKConfigProperties sdkConfigProperties) { + MessageSender messageSender = doGetSender(message.getMessageType()); + messageSender.send(message, sdkConfigProperties); + } + + @Override + public void sendBatch(List messages, DataRangersSDKConfigProperties sdkConfigProperties) { + // 根据类型进行分组 + Map> messageListMap = + messages.stream().collect(Collectors.groupingBy(Message::getMessageType)); + for (Map.Entry> entry : messageListMap.entrySet()) { + List messageList = entry.getValue(); + if (messageList == null || messageList.isEmpty()) { + continue; + } + MessageSender messageSender = doGetSender(entry.getKey()); + messageSender.sendBatch(messageList, sdkConfigProperties); + } + } + + protected MessageSender doGetSender(MessageType messageType) { + MessageSender messageSender = senders.get(messageType); + if (messageSender == null) { + throw new IllegalArgumentException("Not support message: " + messageType); + } + return messageSender; + } +} diff --git a/datarangers-sdk-core/src/main/java/com/datarangers/sender/saas/SaasProfileAppMessageSender.java b/datarangers-sdk-core/src/main/java/com/datarangers/sender/saas/SaasProfileAppMessageSender.java index a2f6adb..826ca5e 100644 --- a/datarangers-sdk-core/src/main/java/com/datarangers/sender/saas/SaasProfileAppMessageSender.java +++ b/datarangers-sdk-core/src/main/java/com/datarangers/sender/saas/SaasProfileAppMessageSender.java @@ -11,6 +11,7 @@ import com.datarangers.util.AuthUtils; import com.datarangers.util.HttpUtils; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; /** @@ -42,4 +43,12 @@ public void send(Message message, DataRangersSDKConfigProperties sdkConfigProper } + @Override + public void sendBatch(List message, DataRangersSDKConfigProperties sdkConfigProperties) { + // 接口不支持批量,这里循环处理 + for (Message m : message) { + send(m, sdkConfigProperties); + } + } + } diff --git a/datarangers-sdk-core/src/main/java/com/datarangers/sender/saas/SaasServerAppMessageSender.java b/datarangers-sdk-core/src/main/java/com/datarangers/sender/saas/SaasServerAppMessageSender.java index 829a8cc..620897e 100644 --- a/datarangers-sdk-core/src/main/java/com/datarangers/sender/saas/SaasServerAppMessageSender.java +++ b/datarangers-sdk-core/src/main/java/com/datarangers/sender/saas/SaasServerAppMessageSender.java @@ -8,8 +8,11 @@ import com.datarangers.message.saas.SaasServerAppMessage; import com.datarangers.sender.MessageSender; import com.datarangers.util.HttpUtils; + import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * @Author zhangpeng.spin@bytedance.com @@ -17,32 +20,52 @@ */ public class SaasServerAppMessageSender implements MessageSender { - private static final String path = "/v2/event/json"; - - @Override - public void send(Message message, DataRangersSDKConfigProperties sdkConfigProperties) { - Object sendMessage = new SaasServerAppMessage(message); - String url = sdkConfigProperties.getDomain() + getPath(sdkConfigProperties); - Map headers = new HashMap<>(); - headers.putAll(EventConfig.SEND_HEADER); - Integer appId = message.getAppMessage().getAppId(); - Map appKeys = sdkConfigProperties.getAppKeys(); - String appKey = appKeys.get(appId); - if(appKey == null){ - throw new IllegalArgumentException("App key cannot be empty. app_id: " + appId); + private static final String PATH = "/v2/event/json"; + + private static final String BATCH_PATH = "/v2/event/list"; + + @Override + public void send(Message message, DataRangersSDKConfigProperties sdkConfigProperties) { + Object sendMessage = new SaasServerAppMessage(message); + String url = sdkConfigProperties.getDomain() + getPath(sdkConfigProperties.getPath(), PATH); + Map headers = new HashMap<>(); + headers.putAll(EventConfig.SEND_HEADER); + Integer appId = message.getAppMessage().getAppId(); + Map appKeys = sdkConfigProperties.getAppKeys(); + String appKey = appKeys.get(appId); + if (appKey == null) { + throw new IllegalArgumentException("App key cannot be empty. app_id: " + appId); + } + headers.put(Constants.APP_KEY, appKey); + HttpUtils.post(url, RangersJSONConfig.getInstance().toJson(sendMessage), headers); } - headers.put(Constants.APP_KEY, appKey); - HttpUtils.post(url, RangersJSONConfig.getInstance().toJson(sendMessage), headers); - } - - protected String getPath(DataRangersSDKConfigProperties sdkConfigProperties) { - String domainPath = sdkConfigProperties.getPath(); - if (domainPath == null || domainPath.trim().length() == 0) { - return path; + + @Override + public void sendBatch(List messages, DataRangersSDKConfigProperties sdkConfigProperties) { + List sendMessages = messages.stream().map(n -> new SaasServerAppMessage(n)) + .collect(Collectors.toList()); + String url = sdkConfigProperties.getDomain() + getPath(sdkConfigProperties.getBatchPath(), BATCH_PATH); + + Map headers = new HashMap<>(); + headers.putAll(EventConfig.SEND_HEADER); + Integer appId = messages.get(0).getAppMessage().getAppId(); + Map appKeys = sdkConfigProperties.getAppKeys(); + String appKey = appKeys.get(appId); + if (appKey == null) { + throw new IllegalArgumentException("App key cannot be empty. app_id: " + appId); + } + headers.put(Constants.APP_KEY, appKey); + String body = RangersJSONConfig.getInstance().toJson(sendMessages); + HttpUtils.post(url, body, headers); } - if (!domainPath.startsWith("/")) { - domainPath = "/" + domainPath; + + protected String getPath(String domainPath, String defaultPath) { + if (domainPath == null || domainPath.trim().length() == 0) { + return defaultPath; + } + if (!domainPath.startsWith("/")) { + domainPath = "/" + domainPath; + } + return domainPath; } - return domainPath; - } } diff --git a/datarangers-sdk-core/src/main/java/com/datarangers/sender/saasnative/SaasNativeMessageSender.java b/datarangers-sdk-core/src/main/java/com/datarangers/sender/saasnative/SaasNativeMessageSender.java index 0832643..4c053d1 100644 --- a/datarangers-sdk-core/src/main/java/com/datarangers/sender/saasnative/SaasNativeMessageSender.java +++ b/datarangers-sdk-core/src/main/java/com/datarangers/sender/saasnative/SaasNativeMessageSender.java @@ -28,9 +28,10 @@ public void send(Message message, DataRangersSDKConfigProperties sdkConfigProper } @Override - public void sendBatch(List message, DataRangersSDKConfigProperties sdkConfigProperties) { - Map headers = getHeaders(message.get(0), sdkConfigProperties); - List sendMessages = message.stream().map(n -> getSassNativeMessage(n)).collect(Collectors.toList()); + public void sendBatch(List messages, DataRangersSDKConfigProperties sdkConfigProperties) { + Map headers = getHeaders(messages.get(0), sdkConfigProperties); + List sendMessages = + messages.stream().map(n -> getSassNativeMessage(n)).collect(Collectors.toList()); HttpUtils.post(EventConfig.getAppListUrl(), RangersJSONConfig.getInstance().toJson(sendMessages), headers); } diff --git a/datarangers-sdk-example/pom.xml b/datarangers-sdk-example/pom.xml index ba9490a..c4e01a4 100644 --- a/datarangers-sdk-example/pom.xml +++ b/datarangers-sdk-example/pom.xml @@ -5,7 +5,7 @@ datarangers-sdk com.datarangers - 1.5.12-release + 1.5.13-release com.datarangers datarangers-sdk-example diff --git a/datarangers-sdk-example/src/main/java/com/datarangers/example/AbstractSdkExample.java b/datarangers-sdk-example/src/main/java/com/datarangers/example/AbstractSdkExample.java index 6637443..02619d2 100644 --- a/datarangers-sdk-example/src/main/java/com/datarangers/example/AbstractSdkExample.java +++ b/datarangers-sdk-example/src/main/java/com/datarangers/example/AbstractSdkExample.java @@ -260,14 +260,12 @@ public void sendItemProfile(int appId) { .setName("Java") .setPrice(100) .setPublishDate("2010-10-11") - .setAuthors(Arrays.asList("zhangsan", "lisi")) .setCategory("1")); items.add( new BookItem("1002", "book") .setName("PHP") .setPrice(100) .setPublishDate("2021-07-20") - .setAuthors(Arrays.asList("zhangsan", "wanger")) .setCategory("2")); appEventCollector.itemSet(appId, "book", items); diff --git a/datarangers-sdk-example/src/main/java/com/datarangers/example/BatchSaasNativeSdkExample.java b/datarangers-sdk-example/src/main/java/com/datarangers/example/BatchSaasNativeSdkExample.java new file mode 100644 index 0000000..c3b18ff --- /dev/null +++ b/datarangers-sdk-example/src/main/java/com/datarangers/example/BatchSaasNativeSdkExample.java @@ -0,0 +1,100 @@ +/* + * Copyright 2020 Beijing Volcano Engine Technology Co., Ltd. + * + * 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 com.datarangers.example; + +import com.datarangers.collector.AppEventCollector; +import com.datarangers.collector.EventCollector; +import com.datarangers.config.Constants; +import com.datarangers.config.DataRangersSDKConfigProperties; +import com.datarangers.config.SdkMode; + +/** + * HTTP模式的特殊场景,当跨网络传输,http 时延比较大的场景,可以使用批量上报的方式来提高性能 + * + * @Author zhangpeng.spin@bytedance.com + * @Date 2022/9/28 + */ +public class BatchSaasNativeSdkExample extends AbstractSdkExample { + private EventCollector appEventCollector; + private EventCollector webEventCollector; + private EventCollector mpEventCollector; + + BatchSaasNativeSdkExample() { + DataRangersSDKConfigProperties properties = new DataRangersSDKConfigProperties(); + // 设置模式 + properties.setEnv(Constants.ENV_SAAS_NATIVE); + properties.setMode(SdkMode.HTTP); + + // 设置domain和appKey + properties.setDomain("https://gator.volces.com"); + + // 可以设置多个app,这里注意替换成真实的参数 + properties.getAppKeys().put(Integer.valueOf(System.getenv("SDK_APP_1")), System.getenv("SDK_APP_KEY_1")); + properties.getAppKeys().put(Integer.valueOf(System.getenv("SDK_APP_2")), System.getenv("SDK_APP_KEY_2")); + + // 设置batch + properties.setSendBatch(true); + + // 可以根据需要进行调试batchSize,一般使用默认的即可 + // properties.setBatchSize(20); + // properties.setWaitTimeMs(100); + + // 初始化collector + appEventCollector = new AppEventCollector("app", properties); + webEventCollector = new AppEventCollector("web", properties); + mpEventCollector = new AppEventCollector("mp", properties); + } + + + @Override + public EventCollector getAppEventCollector() { + return appEventCollector; + } + + @Override + public EventCollector getWebEventCollector() { + return webEventCollector; + } + + @Override + public EventCollector getMpEventCollector() { + return mpEventCollector; + } + + public static void main(String[] args) { + BatchSaasNativeSdkExample sdkExample = new BatchSaasNativeSdkExample(); + String userUniqueId1 = "test_sdk_user_app111"; + String userUniqueId2 = "test_sdk_user_app222"; + + int appId1 = Integer.valueOf(System.getenv("SDK_APP_1")); + int appId2 = Integer.valueOf(System.getenv("SDK_APP_2")); + + for (int i = 0; i < 5; i++) { + // 发送事件,时间发生时间为send方法调用的时间 + sdkExample.sendEvent(userUniqueId1, appId1); + sdkExample.sendEvent(userUniqueId2, appId2); + + sdkExample.senEventWithAbSdk(userUniqueId1, appId1); + sdkExample.senEventWithAbSdk(userUniqueId2, appId2); + + sdkExample.sendUserProfile(userUniqueId1, appId1); + sdkExample.sendUserProfile(userUniqueId2, appId2); + + // 指定localTimeMs时间,即事件发生时间 + sdkExample.sendEventWithLocalTimeMs(userUniqueId1, appId1, System.currentTimeMillis()); + sdkExample.sendEventWithLocalTimeMs(userUniqueId2, appId2, System.currentTimeMillis()); + } + + } +} diff --git a/datarangers-sdk-example/src/main/java/com/datarangers/example/BatchSaasSdkExample.java b/datarangers-sdk-example/src/main/java/com/datarangers/example/BatchSaasSdkExample.java new file mode 100644 index 0000000..5a91094 --- /dev/null +++ b/datarangers-sdk-example/src/main/java/com/datarangers/example/BatchSaasSdkExample.java @@ -0,0 +1,113 @@ +/* + * Copyright 2020 Beijing Volcano Engine Technology Co., Ltd. + * + * 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 com.datarangers.example; + +import com.datarangers.collector.AppEventCollector; +import com.datarangers.collector.EventCollector; +import com.datarangers.config.DataRangersSDKConfigProperties; +import com.datarangers.config.SdkMode; + +/** + * HTTP模式的特殊场景,当跨网络传输,http 时延比较大的场景,可以使用批量上报的方式来提高性能 + * + * @Author zhangpeng.spin@bytedance.com + * @Date 2022/9/28 + */ +public class BatchSaasSdkExample extends AbstractSdkExample { + private EventCollector appEventCollector; + private EventCollector webEventCollector; + private EventCollector mpEventCollector; + + BatchSaasSdkExample() { + DataRangersSDKConfigProperties properties = new DataRangersSDKConfigProperties(); + // 设置模式 + properties.setMode(SdkMode.HTTP); + + // 设置domain和appKey + properties.setDomain("https://mcs.ctobsnssdk.com"); + + // 可以设置多个app,这里注意替换成真实的参数 + properties.getAppKeys().put(Integer.valueOf(System.getenv("SDK_APP_1")), System.getenv("SDK_APP_KEY_1")); + properties.getAppKeys().put(Integer.valueOf(System.getenv("SDK_APP_2")), System.getenv("SDK_APP_KEY_2")); + + + // 设置openapi domain, AK,SK,这里注意替换成真实的参数 + properties.getOpenapiConfig().setDomain("https://analytics.volcengineapi.com"); + properties.getOpenapiConfig().setAk(System.getenv("OPENAPI_AK")); + properties.getOpenapiConfig().setSk(System.getenv("OPENAPI_SK")); + + // 设置batch + properties.setSendBatch(true); + + // 可以根据需要进行调试batchSize,一般使用默认的即可 + // properties.setBatchSize(20); + // properties.setWaitTimeMs(100); + + // 初始化collector + appEventCollector = new AppEventCollector("app", properties); + webEventCollector = new AppEventCollector("web", properties); + mpEventCollector = new AppEventCollector("mp", properties); + } + + + @Override + public EventCollector getAppEventCollector() { + return appEventCollector; + } + + @Override + public EventCollector getWebEventCollector() { + return webEventCollector; + } + + @Override + public EventCollector getMpEventCollector() { + return mpEventCollector; + } + + public static void main(String[] args) { + BatchSaasSdkExample sdkExample = new BatchSaasSdkExample(); + String userUniqueId1 = "test_sdk_user_app111"; + String userUniqueId2 = "test_sdk_user_app222"; + + int appId1 = Integer.valueOf(System.getenv("SDK_APP_1")); + int appId2 = Integer.valueOf(System.getenv("SDK_APP_2")); + + for (int i = 0; i < 5; i++) { + // 发送事件,时间发生时间为send方法调用的时间 + sdkExample.sendEvent(userUniqueId1, appId1); + sdkExample.sendEvent(userUniqueId2, appId2); + + sdkExample.senEventWithAbSdk(userUniqueId1, appId1); + sdkExample.senEventWithAbSdk(userUniqueId2, appId2); + + // 上报用户属性,需要保证先在系统新增用户属性 + sdkExample.sendUserProfile(userUniqueId1, appId1); + sdkExample.sendUserProfile(userUniqueId2, appId2); + + // 指定localTimeMs时间,即事件发生时间 + sdkExample.sendEventWithLocalTimeMs(userUniqueId1, appId1, System.currentTimeMillis()); + sdkExample.sendEventWithLocalTimeMs(userUniqueId2, appId2, System.currentTimeMillis()); + + // item 为book,需要先创建,item 属性, item相关的属性也需要定义 + sdkExample.sendItemProfile(appId1); + sdkExample.sendItemProfile(appId2); + + // 事件with item,item 为book,需要先创建 + sdkExample.sendEventWithItem(userUniqueId1, appId1); + sdkExample.sendEventWithItem(userUniqueId2, appId2); + } + + } +} diff --git a/datarangers-sdk-starter/pom.xml b/datarangers-sdk-starter/pom.xml index 63b6a4f..9cc9bcb 100644 --- a/datarangers-sdk-starter/pom.xml +++ b/datarangers-sdk-starter/pom.xml @@ -6,7 +6,7 @@ com.datarangers datarangers-sdk - 1.5.12-release + 1.5.13-release jar datarangers-sdk-starter diff --git a/pom.xml b/pom.xml index c8837d3..ed08195 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.datarangers datarangers-sdk pom - 1.5.12-release + 1.5.13-release datarangers-sdk-core datarangers-sdk-starter