import time
from time import sleep
from kafka import KafkaProducer, KafkaConsumer
from kafka.errors import kafka_errors
import traceback
import json
kafkaList = ['192.168.6.15:9092', '192.168.6.21:9092', '192.168.6.26:9092']
def start_producer(topic):
print(topic)
producer = KafkaProducer(bootstrap_servers=kafkaList, key_serializer=lambda k: json.dumps(k).encode(), value_serializer=lambda v: json.dumps(v).encode(), api_version=(0, 1, 0))
for i in range(0, 3):
'''
'''
# 获得当前时间时间戳
now = int(time.time())
# 转换为其他日期格式,如:"%Y-%m-%d %H:%M:%S"
timeStruct = time.localtime(now)
strTime = time.strftime("%Y-%m-%d %H:%M:%S", timeStruct)
msg = {
}
msg['userId'] = 888888
msg['msgBody'] = {
}
msg['msgBody']['content'] = strTime
print(msg)
# 同一个key值,会被送至同一个分区
future = producer.send(topic, json.dumps(msg), key=msg['userId'])
try:
future.get(timeout=10)
# 监控是否发送成功
except Exception as e:
print(str(e))
sleep(3)
def consumer_demo(topic='kafka_demo'):
consumer = KafkaConsumer(topic, bootstrap_servers=kafkaList)
for message in consumer:
print("topic=={}".format(message.topic))
msg = {
}
msg['topic'] = message.topic
if message.key is not None:
msg['key'] = json.loads(message.key.decode())
msg['value'] = json.loads(message.value.decode())
print(msg, message)
def consumer_more(topic=['kafka_demo']):
consumer = KafkaConsumer(bootstrap_servers=kafkaList)
consumer.subscribe(topic) # 消费者订阅多个topic
for message in consumer:
# 'kafka_demo', 'kafka_demo1'
if message.topic in ['kafka_demo', 'kafka_demo1']:
continue
print(
message.topic,
message.key,
message.value.decode()
)
def get_topics():
consumer = KafkaConsumer(group_id='test', bootstrap_servers=kafkaList)
topics = consumer.topics()
print(topics)
return topics
if __name__ == "__main__":
topics = get_topics()
topic = 'kafka_demo'
# topic = 'kafka_demo1'
consumer_more([i for i in topics])
# consumer_demo(topic=topic)
print('success')
python kafka 收发消息
猜你喜欢
转载自blog.csdn.net/lizhihua0625/article/details/124841651
今日推荐
周排行