Просмотр исходного кода

Merge pull request #11024 from thalesmg/pulsar-cosmetic-connecting-check-r51

feat(pulsar): retry health check a bit before returning (r5.1)
Thales Macedo Garitezi 2 лет назад
Родитель
Сommit
c11011d857

+ 13 - 2
apps/emqx_bridge_pulsar/src/emqx_bridge_pulsar_impl_producer.erl

@@ -64,6 +64,8 @@
 -define(pulsar_client_id, pulsar_client_id).
 -define(pulsar_producers, pulsar_producers).
 
+-define(HEALTH_CHECK_RETRY_TIMEOUT, 4_000).
+
 %%-------------------------------------------------------------------------------------
 %% `emqx_resource' API
 %%-------------------------------------------------------------------------------------
@@ -440,9 +442,18 @@ render(Message, Template) ->
     emqx_placeholder:proc_tmpl(Template, Message, Opts).
 
 get_producer_status(Producers) ->
+    do_get_producer_status(Producers, 0).
+
+do_get_producer_status(_Producers, TimeSpent) when TimeSpent > ?HEALTH_CHECK_RETRY_TIMEOUT ->
+    connecting;
+do_get_producer_status(Producers, TimeSpent) ->
     case pulsar_producers:all_connected(Producers) of
-        true -> connected;
-        false -> connecting
+        true ->
+            connected;
+        false ->
+            Sleep = 200,
+            timer:sleep(Sleep),
+            do_get_producer_status(Producers, TimeSpent + Sleep)
     end.
 
 partition_strategy(key_dispatch) -> first_key_dispatch;

+ 1 - 0
changes/ee/feat-11024.en.md

@@ -0,0 +1 @@
+Added a small improvement to reduce the chance of seeing the `connecting` state when creating/updating a Pulsar Producer bridge.