|
4 | 4 |
|
5 | 5 | from aiokafka import AIOKafkaConsumer, AIOKafkaProducer |
6 | 6 | from kafka.admin import KafkaAdminClient, NewTopic |
| 7 | +from kafka.coordinator.assignors.roundrobin import RoundRobinPartitionAssignor |
| 8 | +from kafka.partitioner.default import DefaultPartitioner |
7 | 9 | from taskiq import AsyncResultBackend, BrokerMessage |
8 | 10 | from taskiq.abc.broker import AsyncBroker |
| 11 | +from taskiq.compat import model_dump |
9 | 12 |
|
10 | 13 | from taskiq_aio_kafka.exceptions import WrongAioKafkaBrokerParametersError |
11 | 14 | from taskiq_aio_kafka.models import KafkaConsumerParameters, KafkaProducerParameters |
@@ -146,19 +149,31 @@ async def startup(self) -> None: |
146 | 149 | new_topics=[self._kafka_topic], |
147 | 150 | validate_only=False, |
148 | 151 | ) |
| 152 | + |
| 153 | + partitioner = self._aiokafka_producer_params.partitioner or DefaultPartitioner() |
| 154 | + producer_kwargs = model_dump(self._aiokafka_producer_params) |
| 155 | + producer_kwargs["partitioner"] = partitioner |
149 | 156 | self._aiokafka_producer = AIOKafkaProducer( |
150 | 157 | bootstrap_servers=self._bootstrap_servers, |
151 | 158 | loop=self._loop, |
152 | | - **self._aiokafka_producer_params.model_dump(), |
| 159 | + **producer_kwargs, |
153 | 160 | ) |
154 | 161 | await self._aiokafka_producer.start() |
155 | 162 |
|
156 | 163 | if self.is_worker_process: |
| 164 | + partition_assignment_strategy = ( |
| 165 | + self._aiokafka_consumer_params.partition_assignment_strategy |
| 166 | + or (RoundRobinPartitionAssignor,) |
| 167 | + ) |
| 168 | + consumer_kwargs = model_dump(self._aiokafka_consumer_params) |
| 169 | + consumer_kwargs["partition_assignment_strategy"] = ( |
| 170 | + partition_assignment_strategy |
| 171 | + ) |
157 | 172 | self._aiokafka_consumer = AIOKafkaConsumer( |
158 | 173 | self._kafka_topic.name, |
159 | 174 | bootstrap_servers=self._bootstrap_servers, |
160 | 175 | loop=self._loop, |
161 | | - **self._aiokafka_consumer_params.model_dump(), |
| 176 | + **consumer_kwargs, |
162 | 177 | ) |
163 | 178 |
|
164 | 179 | await self._aiokafka_consumer.start() |
|
0 commit comments