Skip to content

Commit e4bd009

Browse files
committed
Use murmur partitioner on librdkafka
1 parent 10c4f34 commit e4bd009

File tree

5 files changed

+9
-37
lines changed

5 files changed

+9
-37
lines changed

msvc_assemble.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,7 @@
3434
get_system_config,
3535
validate_cli_args,
3636
log_event_received,
37-
get_topic_partitions,
3837
set_producer_consumer,
39-
get_custom_partitioner,
4038
)
4139

4240

@@ -60,7 +58,7 @@
6058
CONSUME_TOPICS = [
6159
SYS_CONFIG["kafka-topics"]["pizza_ordered"],
6260
]
63-
_, PRODUCER, CONSUMER, ADMIN_CLIENT = set_producer_consumer(
61+
_, PRODUCER, CONSUMER, _ = set_producer_consumer(
6462
kafka_config_file,
6563
producer_extra_config={
6664
"on_delivery": delivery_report,
@@ -71,9 +69,6 @@
7169
"client.id": f"""{SYS_CONFIG["kafka-client-id"]["microservice_assembled"]}_{HOSTNAME}""",
7270
},
7371
)
74-
CUSTOM_PARTITIONER = get_custom_partitioner()
75-
PARTITIONS_STATUS = get_topic_partitions(ADMIN_CLIENT, PRODUCE_TOPIC_STATUS)
76-
PARTITIONS_ASSEMBLED = get_topic_partitions(ADMIN_CLIENT, PRODUCE_TOPIC_ASSEMBLED)
7772

7873
# Set signal handler
7974
GRACEFUL_SHUTDOWN = GracefulShutdown(consumer=CONSUMER)
@@ -97,7 +92,6 @@ def pizza_assembled(
9792
"timestamp": timestamp_now(),
9893
}
9994
).encode(),
100-
partition=CUSTOM_PARTITIONER(order_id.encode(), PARTITIONS_ASSEMBLED),
10195
)
10296
PRODUCER.flush()
10397

msvc_bake.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,7 @@
3333
get_system_config,
3434
validate_cli_args,
3535
log_event_received,
36-
get_topic_partitions,
3736
set_producer_consumer,
38-
get_custom_partitioner,
3937
)
4038

4139

@@ -58,7 +56,7 @@
5856
CONSUME_TOPICS = [
5957
SYS_CONFIG["kafka-topics"]["pizza_assembled"],
6058
]
61-
_, PRODUCER, CONSUMER, ADMIN_CLIENT = set_producer_consumer(
59+
_, PRODUCER, CONSUMER, _ = set_producer_consumer(
6260
kafka_config_file,
6361
producer_extra_config={
6462
"on_delivery": delivery_report,
@@ -69,9 +67,6 @@
6967
"client.id": f"""{SYS_CONFIG["kafka-client-id"]["microservice_baked"]}_{HOSTNAME}""",
7068
},
7169
)
72-
CUSTOM_PARTITIONER = get_custom_partitioner()
73-
PARTITIONS_BAKED = get_topic_partitions(ADMIN_CLIENT, PRODUCE_TOPIC_BAKED)
74-
PARTITIONS_STATUS = get_topic_partitions(ADMIN_CLIENT, PRODUCE_TOPIC_STATUS)
7570

7671
# Set signal handler
7772
GRACEFUL_SHUTDOWN = GracefulShutdown(consumer=CONSUMER)
@@ -91,7 +86,6 @@ def pizza_baked(order_id: str):
9186
"timestamp": timestamp_now(),
9287
}
9388
).encode(),
94-
partition=CUSTOM_PARTITIONER(order_id.encode(), PARTITIONS_BAKED),
9589
)
9690
PRODUCER.flush()
9791

msvc_delivery.py

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,7 @@
3333
get_system_config,
3434
validate_cli_args,
3535
log_event_received,
36-
get_topic_partitions,
3736
set_producer_consumer,
38-
get_custom_partitioner,
3937
import_state_store_class,
4038
)
4139

@@ -61,7 +59,7 @@
6159
TOPIC_PIZZA_ORDERED = SYS_CONFIG["kafka-topics"]["pizza_ordered"]
6260
TOPIC_PIZZA_BAKED = SYS_CONFIG["kafka-topics"]["pizza_baked"]
6361
CONSUME_TOPICS = [TOPIC_PIZZA_ORDERED, TOPIC_PIZZA_BAKED]
64-
_, PRODUCER, CONSUMER, ADMIN_CLIENT = set_producer_consumer(
62+
_, PRODUCER, CONSUMER, _ = set_producer_consumer(
6563
kafka_config_file,
6664
producer_extra_config={
6765
"on_delivery": delivery_report,
@@ -72,10 +70,6 @@
7270
"client.id": f"""{SYS_CONFIG["kafka-client-id"]["microservice_delivery"]}_{HOSTNAME}""",
7371
},
7472
)
75-
CUSTOM_PARTITIONER = get_custom_partitioner()
76-
PARTITIONS_DELIVERED = get_topic_partitions(ADMIN_CLIENT, PRODUCE_TOPIC_DELIVERED)
77-
PARTITIONS_PENDING = get_topic_partitions(ADMIN_CLIENT, PRODUCE_TOPIC_PENDING)
78-
PARTITIONS_STATUS = get_topic_partitions(ADMIN_CLIENT, PRODUCE_TOPIC_STATUS)
7973

8074
# Set signal handler
8175
GRACEFUL_SHUTDOWN = GracefulShutdown(consumer=CONSUMER)
@@ -110,7 +104,6 @@ def pizza_delivered(order_id: str):
110104
"timestamp": timestamp_now(),
111105
}
112106
).encode(),
113-
partition=CUSTOM_PARTITIONER(order_id.encode(), PARTITIONS_DELIVERED),
114107
)
115108
PRODUCER.flush()
116109

@@ -125,7 +118,6 @@ def pizza_pending(order_id: str):
125118
"timestamp": timestamp_now(),
126119
}
127120
).encode(),
128-
partition=CUSTOM_PARTITIONER(order_id.encode(), PARTITIONS_PENDING),
129121
)
130122
PRODUCER.flush()
131123

utils/__init__.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@
2929
from logging.handlers import TimedRotatingFileHandler
3030
from confluent_kafka.admin import AdminClient
3131

32-
from utils.murmur2 import Murmur2Partitioner
33-
3432

3533
####################
3634
# Global variables #
@@ -260,8 +258,12 @@ def set_producer_consumer(
260258

261259
# Set producer config
262260
if not disable_producer:
261+
producer_common_config = {
262+
"partitioner": "murmur2_random",
263+
}
263264
producer = Producer(
264265
{
266+
**producer_common_config,
265267
**config_kafka,
266268
**producer_extra_config,
267269
}
@@ -278,8 +280,8 @@ def set_producer_consumer(
278280
}
279281
consumer = Consumer(
280282
{
281-
**config_kafka,
282283
**consumer_common_config,
284+
**config_kafka,
283285
**consumer_extra_config,
284286
}
285287
)
@@ -310,11 +312,6 @@ def get_topic_partitions(
310312
return partitions
311313

312314

313-
def get_custom_partitioner():
314-
p = Murmur2Partitioner()
315-
return p.partition
316-
317-
318315
def delivery_report(err, msg):
319316
"""Reports the failure or success of an event delivery"""
320317
msg_key = "" if msg.key() is None else msg.key().decode()

webapp.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@
4646
validate_cli_args,
4747
get_system_config,
4848
set_producer_consumer,
49-
get_topic_partitions,
50-
get_custom_partitioner,
5149
import_state_store_class,
5250
)
5351

@@ -68,16 +66,14 @@
6866

6967
# Set producer object
7068
PRODUCE_TOPIC_ORDERED = SYS_CONFIG["kafka-topics"]["pizza_ordered"]
71-
_, PRODUCER, _, ADMIN_CLIENT = set_producer_consumer(
69+
_, PRODUCER, _, _ = set_producer_consumer(
7270
kafka_config_file,
7371
producer_extra_config={
7472
"on_delivery": delivery_report,
7573
"client.id": f"""{SYS_CONFIG["kafka-client-id"]["webapp"]}_{HOSTNAME}""",
7674
},
7775
disable_consumer=True,
7876
)
79-
CUSTOM_PARTITIONER = get_custom_partitioner()
80-
PARTITIONS_ORDERED = get_topic_partitions(ADMIN_CLIENT, PRODUCE_TOPIC_ORDERED)
8177

8278
# Set signal handler
8379
GRACEFUL_SHUTDOWN = GracefulShutdown()
@@ -231,7 +227,6 @@ def order_pizza():
231227
PRODUCE_TOPIC_ORDERED,
232228
key=order_id,
233229
value=json.dumps(order_details).encode(),
234-
partition=CUSTOM_PARTITIONER(order_id.encode(), PARTITIONS_ORDERED),
235230
)
236231
PRODUCER.flush()
237232

0 commit comments

Comments
 (0)