diff --git a/.idea/dictionaries/project.xml b/.idea/dictionaries/project.xml new file mode 100644 index 0000000..e4fdc9b --- /dev/null +++ b/.idea/dictionaries/project.xml @@ -0,0 +1,7 @@ + + + + vieja + + + \ No newline at end of file diff --git a/src/producer.py b/src/producer.py new file mode 100644 index 0000000..14fdcf8 --- /dev/null +++ b/src/producer.py @@ -0,0 +1,41 @@ +import json +import uuid + +from confluent_kafka import Producer + +# Configuration to set up a Kafka Producer +PRODUCER_CONFIG = { + 'bootstrap.servers': 'localhost:9092', +} + +# A Producer object created using the config +producer = Producer(PRODUCER_CONFIG) + +# Function to "log" if an order was successfully delivered to the Kafka Topic or not +def delivery_report(err, mesg): + if err: + print(f'🚨 Delivery failed: {err}') + else: + print(f'✅ Delivery successful: {mesg.value().decode('utf-8')}') + print(f"✅ Delivered to {mesg.topic()}: partition {mesg.partition()}: at offset {mesg.offset()}") + +# Sample Order +order = { + 'order_id': str(uuid.uuid4()), + 'user': 'Michelle', + 'item': 'Lechon Asado', # yum 😋 + 'quantity': 1 +} + +# Convert order to a Kafka readable value +kafka_value = json.dumps(order).encode('utf-8') + +# Send order to topic (and create topic if it doesn't exist) +producer.produce( + topic='orders', + value=kafka_value, + callback=delivery_report +) + +# Ensures events are sent before closing +producer.flush() \ No newline at end of file