init
This commit is contained in:
42
kafka_service.py
Normal file
42
kafka_service.py
Normal file
@@ -0,0 +1,42 @@
|
||||
from aiokafka import AIOKafkaProducer
|
||||
|
||||
# Kafka 配置
|
||||
KAFKA_BOOTSTRAP_SERVERS = '127.0.0.1:19092'
|
||||
# KAFKA_TOPIC = 'binance_agg_trade'
|
||||
|
||||
class KafkaProducerSingleton:
|
||||
_instance = None
|
||||
_producer = None
|
||||
|
||||
def __new__(cls):
|
||||
if cls._instance is None:
|
||||
cls._instance = super(KafkaProducerSingleton, cls).__new__(cls)
|
||||
return cls._instance
|
||||
|
||||
async def get_producer(self):
|
||||
if self._producer is None:
|
||||
self._producer = AIOKafkaProducer(
|
||||
bootstrap_servers=KAFKA_BOOTSTRAP_SERVERS,
|
||||
key_serializer=lambda k: k.encode('utf-8'),
|
||||
value_serializer=lambda v: v.encode('utf-8'),
|
||||
linger_ms=100
|
||||
)
|
||||
await self._producer.start()
|
||||
return self._producer
|
||||
|
||||
async def stop_producer(self):
|
||||
if self._producer is not None:
|
||||
await self._producer.stop()
|
||||
self._producer = None
|
||||
|
||||
# 初始化单例实例
|
||||
_kafka_producer_singleton = KafkaProducerSingleton()
|
||||
|
||||
async def send_to_kafka(topic, data, key=None):
|
||||
"""将数据发送到 Kafka 主题"""
|
||||
producer = await _kafka_producer_singleton.get_producer()
|
||||
#print(topic, data, key)
|
||||
try:
|
||||
await producer.send(topic, data,key=key)
|
||||
except Exception as e:
|
||||
print("error: ", topic, data, key,e)
|
||||
Reference in New Issue
Block a user