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 {
//默认超时 //默认超时
int timeout = 3; 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() { public String getBid() {
@ -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 @@
**************************************************/ **************************************************/
package com.dji.sdk.config; package com.dji.sdk.config;
import com.dji.sdk.common.JDKLockBarrierImpl; import com.dji.sdk.common.*;
import com.dji.sdk.common.LocalCacheSDKManager;
import com.dji.sdk.common.PublishBarrier;
import com.dji.sdk.common.SDKManager;
import com.dji.sdk.mqtt.ChanBarrierAdapter; 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.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; 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 @Configuration
public class DefaultBeanConfiguration { 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 @Bean
@ConditionalOnMissingBean(SDKManager.class) @ConditionalOnMissingBean(SDKManager.class)
public SDKManager localCacheSDKManager(){ public SDKManager localCacheSDKManager(){

23
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<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 {
@Resource @Resource
private PublishBarrier publishBarrier; private PublishBarrier publishBarrier;
@Resource
private GlobalPublishOption globalOptions;
public void publish(String topic, int qos, CommonTopicRequest request) { public void publish(String topic, int qos, CommonTopicRequest request) {
try { try {
if(log.isDebugEnabled()) { if(log.isDebugEnabled()) {
@ -144,11 +147,19 @@ public class MqttGatewayPublish {
options.accept(option); options.accept(option);
if(Strings.isNullOrEmpty(config.getBid())){ if(Strings.isNullOrEmpty(config.getBid())){
config.setBizId(UUID.randomUUID().toString()); config.setBizId(globalOptions.defaultBizId().get());
} }
if(Strings.isNullOrEmpty(config.getTid())){ 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; return config;
} }

Loading…
Cancel
Save