From a3360878835e4606c968441e432b0c3d4bd921ae Mon Sep 17 00:00:00 2001
From: sean.zhou <sean.zhou@dji.com>
Date: Fri, 23 Sep 2022 18:04:07 +0800
Subject: [PATCH] V1.2.0

---
 src/main/java/com/dji/sample/component/mqtt/service/impl/MessageSenderServiceImpl.java |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/dji/sample/component/mqtt/service/impl/MessageSenderServiceImpl.java b/src/main/java/com/dji/sample/component/mqtt/service/impl/MessageSenderServiceImpl.java
index ae24b37..10bb7e2 100644
--- a/src/main/java/com/dji/sample/component/mqtt/service/impl/MessageSenderServiceImpl.java
+++ b/src/main/java/com/dji/sample/component/mqtt/service/impl/MessageSenderServiceImpl.java
@@ -50,14 +50,18 @@
     }
 
     public Optional<ServiceReply> publishWithReply(String topic, CommonTopicResponse response) {
+        return this.publishWithReply(ServiceReply.class, topic, response, 2);
+    }
+
+    public <T> Optional<T> publishWithReply(Class<T> clazz, String topic, CommonTopicResponse response, int retryTime) {
         AtomicInteger time = new AtomicInteger(0);
         // Retry three times
-        while (time.getAndIncrement() < 3) {
+        while (time.getAndIncrement() < retryTime) {
             this.publish(topic, response);
 
-            Chan<CommonTopicReceiver<ServiceReply>> chan = Chan.getInstance();
+            Chan<CommonTopicReceiver<T>> chan = Chan.getInstance();
             // If the message is not received in 0.5 seconds then resend it again.
-            CommonTopicReceiver<ServiceReply> receiver = chan.get(response.getMethod());
+            CommonTopicReceiver<T> receiver = chan.get(response.getMethod());
             if (receiver == null) {
                 continue;
             }

--
Gitblit v1.9.3