| 
1 |  | -import logging  | 
 | 1 | +#!/usr/bin/env python  | 
 | 2 | +import threading, logging, time  | 
2 | 3 | 
 
  | 
3 |  | -from kafka.client import KafkaClient, FetchRequest, ProduceRequest  | 
 | 4 | +from kafka.client import KafkaClient  | 
4 | 5 | from kafka.consumer import SimpleConsumer  | 
5 | 6 | from kafka.producer import SimpleProducer  | 
6 | 7 | 
 
  | 
7 |  | -def produce_example(client):  | 
8 |  | -    producer = SimpleProducer(client, "my-topic")  | 
9 |  | -    producer.send_messages("test")  | 
 | 8 | +class Producer(threading.Thread):  | 
 | 9 | +    daemon = True  | 
10 | 10 | 
 
  | 
11 |  | -def consume_example(client):  | 
12 |  | -    consumer = SimpleConsumer(client, "test-group", "my-topic")  | 
13 |  | -    for message in consumer:  | 
14 |  | -        print(message)  | 
 | 11 | +    def run(self):  | 
 | 12 | +        client = KafkaClient("localhost:9092")  | 
 | 13 | +        producer = SimpleProducer(client)  | 
 | 14 | + | 
 | 15 | +        while True:  | 
 | 16 | +            producer.send_messages('my-topic', "test")  | 
 | 17 | +            producer.send_messages('my-topic', "\xc2Hola, mundo!")  | 
 | 18 | + | 
 | 19 | +            time.sleep(1)  | 
 | 20 | + | 
 | 21 | + | 
 | 22 | +class Consumer(threading.Thread):  | 
 | 23 | +    daemon = True  | 
 | 24 | + | 
 | 25 | +    def run(self):  | 
 | 26 | +        client = KafkaClient("localhost:9092")  | 
 | 27 | +        consumer = SimpleConsumer(client, "test-group", "my-topic")  | 
 | 28 | + | 
 | 29 | +        for message in consumer:  | 
 | 30 | +            print(message)  | 
15 | 31 | 
 
  | 
16 | 32 | def main():  | 
17 |  | -    client = KafkaClient("localhost:9092")  | 
18 |  | -    produce_example(client)  | 
19 |  | -    consume_example(client)  | 
 | 33 | +    threads = [  | 
 | 34 | +        Producer(),  | 
 | 35 | +        Consumer()  | 
 | 36 | +    ]  | 
 | 37 | + | 
 | 38 | +    for t in threads:  | 
 | 39 | +        t.start()  | 
 | 40 | + | 
 | 41 | +    time.sleep(5)  | 
20 | 42 | 
 
  | 
21 | 43 | if __name__ == "__main__":  | 
22 |  | -    logging.basicConfig(level=logging.DEBUG)  | 
 | 44 | +    logging.basicConfig(  | 
 | 45 | +        format='%(asctime)s.%(msecs)s:%(name)s:%(thread)d:%(levelname)s:%(process)d:%(message)s',  | 
 | 46 | +        level=logging.DEBUG  | 
 | 47 | +        )  | 
23 | 48 |     main()  | 
0 commit comments