基于Kafka的消息中间件组件封装,老样子直接上代码:
import json
import threading
import uuid
from typing import Union
try:
from kafka import KafkaConsumer
from kafka import KafkaProducer
except:
import os
os.system(' pip install -i https://pypi.tuna.tsinghua.edu.cn/simple kafka-python ')
from kafka import KafkaConsumer
from kafka import KafkaProducer
class KafkaMQ():
producer = None # 生产者
consumer = None # 消费者
consumer_channel = None # 订阅的频道
def __init__(self,
nodes: Union[list, str],
topics=None,
group_id=None,
username=None,
pwd=None,
security_protocol='PLAINTEXT',
create_producter=True
):
"""
:param nodes:kafka集群节点地址可以是列表或者逗号分隔字符。集群地址必须是:ip:port组成。
:param topics:消息主题,可以是列表或者逗号分隔字符,可以在创建对象后分配。
:param group_id:多个拥有相同group_id的消费者被判定为一组,一条数据记录只会被同一个组中的一个消费者消费。一般不设置!
:param client_id:客户端id,默认时随机编号
:param username:用户名
:param pwd:密码
:param create_producter:默认创建生产者
"""
if topics is None:
self.consumer_channel = []
else:
self.consumer_channel = topics
self.nodes = no