python 自建kafka消息生成和消费小工具

要将 Kafka 的消息生产和消费转换为 API 接口,我们可以使用 Python 的 Web 框架。其中 Flask 是一个轻量级且易于使用的选择。下面是一个简单的例子,使用 Flask 创建 API 来生成和消费 Kafka 消息。

1. 安装所需的库:

bash 复制代码
pip install kafka-python flask

2. 创建 Flask API:

python 复制代码
from flask import Flask, request, jsonify
from kafka import KafkaProducer, KafkaConsumer

app = Flask(__name__)

# 配置 Kafka
KAFKA_BROKER_URL = 'localhost:9092'
TOPIC = 'test_topic'
producer = KafkaProducer(bootstrap_servers=KAFKA_BROKER_URL)


@app.route('/send', methods=['POST'])
def send_message():
    message = request.json.get('message')
    if message:
        producer.send(TOPIC, value=message.encode('utf-8'))
        return jsonify({"status": "success", "message": "Message sent!"}), 200
    else:
        return jsonify({"status": "error", "message": "Message cannot be empty!"}), 400


@app.route('/receive', methods=['GET'])
def receive_message():
    consumer = KafkaConsumer(TOPIC, bootstrap_servers=KAFKA_BROKER_URL, auto_offset_reset='earliest')
    messages = []
    for message in consumer:
        messages.append(message.value.decode('utf-8'))
        if len(messages) > 5:  # 只收集最近的5条消息,可以根据需要调整
            break
    return jsonify(messages)


if __name__ == '__main__':
    app.run(debug=True, port=5000)

这个 Flask 应用程序定义了两个端点:

  • /send: 它接受 POST 请求并发送消息到 Kafka。
  • /receive: 它返回 Kafka 主题中的最近消息。

3. 使用 API:

  • 发送消息:
bash 复制代码
curl -X POST http://localhost:5000/send -H "Content-Type: application/json" -d '{"message": "Hello, Kafka!"}'
  • 接收消息:
bash 复制代码
curl http://localhost:5000/receive

这只是一个简单的示例,您可能需要添加错误处理、日志记录、认证、消息序列化和反序列化等功能,以满足更复杂的需求。

相关推荐
总要学点什么6 分钟前
第98篇:三维特效-材质线效果——给一条线换十种材质,虚线的图案只填了一半
开发语言·前端·javascript·ecmascript·gis·webgl·材质
田甲20 分钟前
做一款 Type-C 母座读卡器:GL3224 双卡方案实测
c语言·开发语言
青少儿编程课堂31 分钟前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:中缀表达式求值解析
c++·python·算法·bfs·信息学竞赛
严肃小白兔37 分钟前
MATLAB 绘图与科研论文插图制作:图形设计、统计表达与矢量导出
开发语言·matlab·科研绘图
Funlang2 小时前
给机器写的 JavaScript 造个笼子
开发语言·javascript·ecmascript
普通人62 小时前
PHP文件读写完全指南
开发语言·php·1024程序员节
灿飞屋3 小时前
Kotlin与Java虚拟机四:函数
java·python·kotlin·安卓·android jetpack
坤坤子吖3 小时前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习
一晌小贪欢4 小时前
Python基础:第 09 篇 · while 循环:重复直到不满足
开发语言·c++·python·数据可视化·面向对象·python办公
xiaoye-duck4 小时前
《C++ 项目:手写大模型接入 SDK》LLMManager架构设计与实现
开发语言·网络·c++·语言模型