@@ -7,7 +7,8 @@ object Fs2KafkaModule {
7
7
8
8
def makeConsumer [F [_]: ConcurrentEffect : ContextShift : Timer , K : Deserializer [F , * ], V : Deserializer [F , * ]](
9
9
config : ConsumerConfig ,
10
- blocker : Option [Blocker ] = None
10
+ blocker : Option [Blocker ] = None ,
11
+ createConsumer : Option [Map [String , String ] => F [KafkaByteConsumer ]] = None
11
12
): Resource [F , KafkaConsumer [F , K , V ]] = {
12
13
def setOpt [A ](maybeValue : Option [A ])(
13
14
setter : (ConsumerSettings [F , K , V ], A ) => ConsumerSettings [F , K , V ]
@@ -42,6 +43,7 @@ object Fs2KafkaModule {
42
43
.withSessionTimeout(config.sessionTimeout)
43
44
.pipe(setOpt(blocker)(_.withBlocker(_)))
44
45
.withProperties(config.properties)
46
+ .pipe(setOpt(createConsumer)(_.withCreateConsumer(_)))
45
47
46
48
makeConsumer(settings)
47
49
}
@@ -52,7 +54,8 @@ object Fs2KafkaModule {
52
54
53
55
def makeProducer [F [_]: ConcurrentEffect : ContextShift , K : Serializer [F , * ], V : Serializer [F , * ]](
54
56
config : ProducerConfig ,
55
- blocker : Option [Blocker ] = None
57
+ blocker : Option [Blocker ] = None ,
58
+ createProducer : Option [Map [String , String ] => F [KafkaByteProducer ]] = None
56
59
): Resource [F , KafkaProducer [F , K , V ]] = {
57
60
def setOpt [A ](maybeValue : Option [A ])(
58
61
setter : (ProducerSettings [F , K , V ], A ) => ProducerSettings [F , K , V ]
@@ -77,6 +80,7 @@ object Fs2KafkaModule {
77
80
.withRetries(config.retries)
78
81
.pipe(setOpt(blocker)(_.withBlocker(_)))
79
82
.withProperties(config.properties)
83
+ .pipe(setOpt(createProducer)(_.withCreateProducer(_)))
80
84
81
85
makeProducer(settings)
82
86
}
0 commit comments