File tree Expand file tree Collapse file tree 1 file changed +22
-1
lines changed Expand file tree Collapse file tree 1 file changed +22
-1
lines changed Original file line number Diff line number Diff line change @@ -167,7 +167,22 @@ async def admin(self) -> AIOKafkaClient:
167
167
if k in params
168
168
})
169
169
170
- async def get_consumer (self ):
170
+ async def seek (self , offset : int , consumer : Optional [AIOKafkaConsumer ]):
171
+ """Seek to offset."""
172
+ if not (c := consumer or self .consumer ):
173
+ raise RuntimeError ('No consumer provided.' )
174
+ partitions = c .assignment ()
175
+ if offset < READ_FROM_START :
176
+ raise ValueError (f'Offset must be bigger than: { READ_FROM_START } .' )
177
+ if offset == READ_FROM_START :
178
+ await c .seek_to_beginning (* partitions )
179
+ elif offset == READ_FROM_END :
180
+ await c .seek_to_end (* partitions )
181
+ else :
182
+ for p in partitions :
183
+ c .seek (p , offset )
184
+
185
+ async def get_consumer (self ) -> AIOKafkaConsumer :
171
186
"""Get started instance of Kafka consumer."""
172
187
params = get_params_names (AIOKafkaConsumer )
173
188
if self .codec :
@@ -178,6 +193,12 @@ async def get_consumer(self):
178
193
if k in params
179
194
})
180
195
await consumer .start ()
196
+ if self .starting_offset :
197
+ try :
198
+ await self .seek (self .starting_offset , consumer )
199
+ except Exception :
200
+ await consumer .stop ()
201
+ raise
181
202
return consumer
182
203
183
204
async def get_producer (self ):
You can’t perform that action at this time.
0 commit comments