@@ -18,8 +18,10 @@ package monix.kafka
18
18
19
19
import java .io .File
20
20
import java .util .Properties
21
+
21
22
import com .typesafe .config .{Config , ConfigFactory }
22
23
import monix .kafka .config ._
24
+
23
25
import scala .concurrent .duration ._
24
26
25
27
/** The Kafka Producer config.
@@ -179,6 +181,11 @@ import scala.concurrent.duration._
179
181
* @param monixSinkParallelism is the `monix.producer.sink.parallelism`
180
182
* setting indicating how many requests the [[KafkaProducerSink ]]
181
183
* can execute in parallel.
184
+ *
185
+ * @param properties map of other properties that will be passed to
186
+ * the underlying kafka client. Any properties not explicitly handled
187
+ * by this object can be set via the map, but in case of a duplicate
188
+ * a value set on the case class will overwrite value set via properties.
182
189
*/
183
190
case class KafkaProducerConfig (
184
191
bootstrapServers : List [String ],
@@ -215,15 +222,10 @@ case class KafkaProducerConfig(
215
222
metricReporters : List [String ],
216
223
metricsNumSamples : Int ,
217
224
metricsSampleWindow : FiniteDuration ,
218
- monixSinkParallelism : Int ) {
225
+ monixSinkParallelism : Int ,
226
+ properties : Map [String , String ]) {
219
227
220
- def toProperties : Properties = {
221
- val props = new Properties ()
222
- for ((k,v) <- toMap; if v != null ) props.put(k,v)
223
- props
224
- }
225
-
226
- def toMap : Map [String ,String ] = Map (
228
+ def toMap : Map [String , String ] = properties ++ Map (
227
229
" bootstrap.servers" -> bootstrapServers.mkString(" ," ),
228
230
" acks" -> acks.id,
229
231
" buffer.memory" -> bufferMemoryInBytes.toString,
@@ -259,6 +261,12 @@ case class KafkaProducerConfig(
259
261
" metrics.num.samples" -> metricsNumSamples.toString,
260
262
" metrics.sample.window.ms" -> metricsSampleWindow.toMillis.toString
261
263
)
264
+
265
+ def toProperties : Properties = {
266
+ val props = new Properties ()
267
+ for ((k,v) <- toMap; if v != null ) props.put(k,v)
268
+ props
269
+ }
262
270
}
263
271
264
272
object KafkaProducerConfig {
@@ -385,7 +393,8 @@ object KafkaProducerConfig {
385
393
metricReporters = config.getString(" metric.reporters" ).trim.split(" \\ s*,\\ s*" ).toList,
386
394
metricsNumSamples = config.getInt(" metrics.num.samples" ),
387
395
metricsSampleWindow = config.getInt(" metrics.sample.window.ms" ).millis,
388
- monixSinkParallelism = config.getInt(" monix.producer.sink.parallelism" )
396
+ monixSinkParallelism = config.getInt(" monix.producer.sink.parallelism" ),
397
+ properties = Map .empty
389
398
)
390
399
}
391
400
}
0 commit comments