Python向kafka发送Msg
import json
import datetime
import socket
from kafka import KafkaProducer
from kafka.errors import KafkaError
class KafkaProducerObj:
def __init__(self, server):
self._server = server
self.producer = KafkaProducer(bootstrap_servers='{address}'.format(address=self._server))
def send_data(self, topic, params):
try:
messages = json.dumps(params)
self.producer.send(
topic=topic,
key=messages.encode('utf-8'),
value=messages.encode("utf-8")
)
self.producer.flush()
except KafkaError as e:
print(e)
def __del__(self):
try:
if self.producer is not None:
self.producer.close(timeout=2)
self.producer = None
except KafkaError as e:
print(e)
def send_msg(data):
"""
将数据发送至kafka
:param data:
:return:
"""
host_ip = get_host_ip()
log_level = "INFO"
appId = "ove"
logInfo = data
event_time = get_current_time()
# 发送数据
send_data = dict()
send_data["event_time"] = event_time
send_data["hostIp"] = host_ip
send_data["logLevel"] = log_level
send_data["appId"] = appId
send_data["logInfo"] = logInfo
# 发送消息
producer = KafkaProducerObj('ip:port') # 输入ip地址与端口号
producer.send_data(topic="topic-bdplog-ocr-commonproduct", params=send_data)
def get_host_ip():
"""
查询本机ip地址
:return: ip
"""
s = None
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('8.8.8.8', 80))
ip = s.getsockname()[0]
finally:
s.close()
return ip
def get_current_time():
"""
获取当前时刻时间
:return: 返回字符形式
"""
now_time = datetime.datetime.now().strftime('%Y-%m-%dT%H:%M:%S')
return now_time
if __name__ == '__main__':
msg = {"receive_data": 90, "all_data": 100, "flag": "1"}
msg2 = {"flag": "0", "errorInfo": "识别发生异常。"}
msg3 = {"flag": " 0", "errorInfo": "未识别有效信息。"}
send_msg(msg)