From 52ec34679583284d54165a6b7339d82def621bdd Mon Sep 17 00:00:00 2001 From: Vincent Date: Mon, 25 Sep 2023 15:18:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=85=A8=E5=B1=80?= =?UTF-8?q?=E5=8F=91=E9=80=81=E9=BB=98=E8=AE=A4=E8=AE=BE=E7=BD=AE=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dji/sdk/common/PublishConfiguration.java | 12 +++++- .../sdk/config/DefaultBeanConfiguration.java | 42 +++++++++++++++++-- .../com/dji/sdk/mqtt/GlobalPublishOption.java | 23 ++++++++++ .../com/dji/sdk/mqtt/MqttGatewayPublish.java | 15 ++++++- 4 files changed, 84 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/dji/sdk/mqtt/GlobalPublishOption.java diff --git a/src/main/java/com/dji/sdk/common/PublishConfiguration.java b/src/main/java/com/dji/sdk/common/PublishConfiguration.java index 4aae251..7ea22ab 100644 --- a/src/main/java/com/dji/sdk/common/PublishConfiguration.java +++ b/src/main/java/com/dji/sdk/common/PublishConfiguration.java @@ -21,9 +21,9 @@ public class PublishConfiguration { //默认超时 int timeout = 3; //请求发送前调用 - Consumer beforePublishHook = (e)->{}; + Consumer beforePublishHook = null; //收到请求回信后调用 - BiConsumer afterPublishHook = (req,rsp) ->{}; + BiConsumer afterPublishHook = null; public String getBid() { @@ -79,4 +79,12 @@ public class PublishConfiguration { } } } + + public boolean noneBeforePublishHook() { + return Objects.isNull(beforePublishHook); + } + + public boolean noneAfterPublishHook() { + return Objects.isNull(afterPublishHook); + } } diff --git a/src/main/java/com/dji/sdk/config/DefaultBeanConfiguration.java b/src/main/java/com/dji/sdk/config/DefaultBeanConfiguration.java index 3e03b0c..80c40d1 100644 --- a/src/main/java/com/dji/sdk/config/DefaultBeanConfiguration.java +++ b/src/main/java/com/dji/sdk/config/DefaultBeanConfiguration.java @@ -7,18 +7,52 @@ **************************************************/ package com.dji.sdk.config; -import com.dji.sdk.common.JDKLockBarrierImpl; -import com.dji.sdk.common.LocalCacheSDKManager; -import com.dji.sdk.common.PublishBarrier; -import com.dji.sdk.common.SDKManager; +import com.dji.sdk.common.*; import com.dji.sdk.mqtt.ChanBarrierAdapter; +import com.dji.sdk.mqtt.CommonTopicRequest; +import com.dji.sdk.mqtt.GlobalPublishOption; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import java.util.UUID; +import java.util.function.BiConsumer; +import java.util.function.Consumer; +import java.util.function.Supplier; + @Configuration public class DefaultBeanConfiguration { + /** + * 全局发送默认设置 + * @return + */ + @Bean + @ConditionalOnMissingBean(GlobalPublishOption.class) + public GlobalPublishOption defaultPublishOption(){ + return new GlobalPublishOption() { + @Override + public Supplier defaultTransactionId() { + return ()-> UUID.randomUUID().toString(); + } + + @Override + public Supplier defaultBizId() { + return ()-> UUID.randomUUID().toString(); + } + + @Override + public Consumer defaultBeforePublishHook() { + return null; + } + + @Override + public BiConsumer defaultAfterPublishHook() { + return null; + } + }; + } + @Bean @ConditionalOnMissingBean(SDKManager.class) public SDKManager localCacheSDKManager(){ diff --git a/src/main/java/com/dji/sdk/mqtt/GlobalPublishOption.java b/src/main/java/com/dji/sdk/mqtt/GlobalPublishOption.java new file mode 100644 index 0000000..88f797a --- /dev/null +++ b/src/main/java/com/dji/sdk/mqtt/GlobalPublishOption.java @@ -0,0 +1,23 @@ +/************************************************* + * @copyright 2017 Flision Corporation Inc. + * @author: Vincent Chan @ Canton + * @date: 2023年09月25日 + * @version: 1.0.0 + * @description: 全局发送默认配置 + **************************************************/ +package com.dji.sdk.mqtt; + +import com.dji.sdk.common.PublishBarrierResult; + +import java.util.function.BiConsumer; +import java.util.function.Consumer; +import java.util.function.Supplier; + +public interface GlobalPublishOption { + Supplier defaultTransactionId(); + Supplier defaultBizId(); + + Consumer defaultBeforePublishHook(); + BiConsumer defaultAfterPublishHook(); + +} diff --git a/src/main/java/com/dji/sdk/mqtt/MqttGatewayPublish.java b/src/main/java/com/dji/sdk/mqtt/MqttGatewayPublish.java index 956e200..e2d1b88 100644 --- a/src/main/java/com/dji/sdk/mqtt/MqttGatewayPublish.java +++ b/src/main/java/com/dji/sdk/mqtt/MqttGatewayPublish.java @@ -39,6 +39,9 @@ public class MqttGatewayPublish { @Resource private PublishBarrier publishBarrier; + @Resource + private GlobalPublishOption globalOptions; + public void publish(String topic, int qos, CommonTopicRequest request) { try { if(log.isDebugEnabled()) { @@ -144,11 +147,19 @@ public class MqttGatewayPublish { options.accept(option); if(Strings.isNullOrEmpty(config.getBid())){ - config.setBizId(UUID.randomUUID().toString()); + config.setBizId(globalOptions.defaultBizId().get()); } if(Strings.isNullOrEmpty(config.getTid())){ - config.setTransactionId(UUID.randomUUID().toString()); + config.setTransactionId(globalOptions.defaultTransactionId().get()); + } + + if(config.noneBeforePublishHook()){ + config.setBeforePublishHook(globalOptions.defaultBeforePublishHook()); + } + + if(config.noneAfterPublishHook()){ + config.setAfterPublishReplyHook(globalOptions.defaultAfterPublishHook()); } return config; }