Browse Source

feat: 新增全局发送默认设置接口

pull/41/head
Vincent 1 year ago
parent
commit
52ec346795
  1. 12
      src/main/java/com/dji/sdk/common/PublishConfiguration.java
  2. 42
      src/main/java/com/dji/sdk/config/DefaultBeanConfiguration.java
  3. 23
      src/main/java/com/dji/sdk/mqtt/GlobalPublishOption.java
  4. 15
      src/main/java/com/dji/sdk/mqtt/MqttGatewayPublish.java

12
src/main/java/com/dji/sdk/common/PublishConfiguration.java

@ -21,9 +21,9 @@ public class PublishConfiguration { @@ -21,9 +21,9 @@ public class PublishConfiguration {
//默认超时
int timeout = 3;
//请求发送前调用
Consumer<CommonTopicRequest> beforePublishHook = (e)->{};
Consumer<CommonTopicRequest> beforePublishHook = null;
//收到请求回信后调用
BiConsumer<CommonTopicRequest, PublishBarrierResult> afterPublishHook = (req,rsp) ->{};
BiConsumer<CommonTopicRequest, PublishBarrierResult> afterPublishHook = null;
public String getBid() {
@ -79,4 +79,12 @@ public class PublishConfiguration { @@ -79,4 +79,12 @@ public class PublishConfiguration {
}
}
}
public boolean noneBeforePublishHook() {
return Objects.isNull(beforePublishHook);
}
public boolean noneAfterPublishHook() {
return Objects.isNull(afterPublishHook);
}
}

42
src/main/java/com/dji/sdk/config/DefaultBeanConfiguration.java

@ -7,18 +7,52 @@ @@ -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<String> defaultTransactionId() {
return ()-> UUID.randomUUID().toString();
}
@Override
public Supplier<String> defaultBizId() {
return ()-> UUID.randomUUID().toString();
}
@Override
public Consumer<CommonTopicRequest> defaultBeforePublishHook() {
return null;
}
@Override
public BiConsumer<CommonTopicRequest, PublishBarrierResult> defaultAfterPublishHook() {
return null;
}
};
}
@Bean
@ConditionalOnMissingBean(SDKManager.class)
public SDKManager localCacheSDKManager(){

23
src/main/java/com/dji/sdk/mqtt/GlobalPublishOption.java

@ -0,0 +1,23 @@ @@ -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<String> defaultTransactionId();
Supplier<String> defaultBizId();
Consumer<CommonTopicRequest> defaultBeforePublishHook();
BiConsumer<CommonTopicRequest, PublishBarrierResult> defaultAfterPublishHook();
}

15
src/main/java/com/dji/sdk/mqtt/MqttGatewayPublish.java

@ -39,6 +39,9 @@ public class MqttGatewayPublish { @@ -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 { @@ -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;
}

Loading…
Cancel
Save