瀏覽代碼

fix(kafka): olp fix was accidentally deleted in 0fd8880d0a

Zaiming (Stone) Shi 3 年之前
父節點
當前提交
3872c4451f
共有 1 個文件被更改,包括 12 次插入3 次删除
  1. 12 3
      lib-ee/emqx_ee_bridge/src/kafka/emqx_bridge_impl_kafka_producer.erl

+ 12 - 3
lib-ee/emqx_ee_bridge/src/kafka/emqx_bridge_impl_kafka_producer.erl

@@ -253,10 +253,14 @@ producers_config(BridgeName, ClientId, Input) ->
             mode := BufferMode,
             per_partition_limit := PerPartitionLimit,
             segment_bytes := SegmentBytes,
-            memory_overload_protection := MemOLP
+            memory_overload_protection := MemOLP0
         }
     } = Input,
-
+    MemOLP =
+        case os:type() of
+            {unix, linux} -> MemOLP0;
+            _ -> false
+        end,
     {OffloadMode, ReplayqDir} =
         case BufferMode of
             memory -> {false, false};
@@ -268,7 +272,7 @@ producers_config(BridgeName, ClientId, Input) ->
     ResourceID = emqx_bridge_resource:resource_id(BridgeType, BridgeName),
     #{
         name => make_producer_name(BridgeName),
-        partitioner => PartitionStrategy,
+        partitioner => partitioner(PartitionStrategy),
         partition_count_refresh_interval_seconds => PCntRefreshInterval,
         replayq_dir => ReplayqDir,
         replayq_offload_mode => OffloadMode,
@@ -282,6 +286,11 @@ producers_config(BridgeName, ClientId, Input) ->
         telemetry_meta_data => #{bridge_id => ResourceID}
     }.
 
+%% Wolff API is a batch API.
+%% key_dispatch only looks at the first element, so it's named 'first_key_dispatch'
+partitioner(random) -> random;
+partitioner(key_dispatch) -> first_key_dispatch.
+
 replayq_dir(ClientId) ->
     filename:join([emqx:data_dir(), "kafka", ClientId]).