Python发kafka消息

要在Python中向Kafka发送消息,你可以使用`kafka-python`库。首先,你需要安装这个库。如果你还没有安装它,可以通过pip来安装:

```bash

pip install kafka-python

```

接下来是一个简单的例子,展示如何创建一个生产者(Producer)并向Kafka主题(Topic)发送消息。

发送字符串消息

```python

from kafka import KafkaProducer

import json

初始化Kafka生产者

producer = KafkaProducer(

bootstrap_servers='localhost:9092', # Kafka服务器地址

value_serializer=lambda x: json.dumps(x).encode('utf-8') # 序列化函数

)

发送一条消息到名为 'my-topic' 的主题

producer.send('my-topic', value='Hello, World!')

确保所有消息都被发送出去

producer.flush()

关闭生产者连接

producer.close()

```

发送JSON格式的消息

如果你想发送更复杂的数据结构,比如字典,可以使用JSON序列化:

```python

发送JSON格式的消息

data = {'key': 'value', 'another_key': 42}

使用已经定义的生产者发送消息

producer.send('my-topic', value=data)

同样需要flush和close

producer.flush()

producer.close()

```

异步发送消息

KafkaProducer默认是异步发送消息的,即`send()`方法会立即返回而不会等待消息被成功发送。你可以通过回调函数来处理发送结果:

```python

def on_send_success(record_metadata):

print(f'Message sent to topic {record_metadata.topic} at offset {record_metadata.offset}')

def on_send_error(excp):

print(f'I am an errback {excp}')

handle exception

发送消息并附加回调

future = producer.send('my-topic', value='Another message')

future.add_callback(on_send_success)

future.add_errback(on_send_error)

阻塞直到所有消息发送完成

producer.flush()

关闭生产者连接

producer.close()

```

请确保你已经正确配置了Kafka集群,并且在代码中指定了正确的`bootstrap_servers`。如果你的Kafka集群运行在不同的机器上或端口不是9092,请相应地调整连接设置。此外,如果你的主题有特定的分区策略或者需要指定键值,也可以在`send`方法中提供`key`参数和其他选项。

相关推荐
代码山河8 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
在世修行8 小时前
智学文枢:题目流水线
python·多线程·状态机·pyside
梯度下降者9 小时前
零基础入门Python 爬虫
爬虫·python·数据分析·入门指南·webcrawler
“AI国潮设计-小江”10 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
benchmark_cc11 小时前
用 Python 拉 A 股全市场实时快照:Notebook 请求、结果校验与易错点
python·数据分析·pandas·量化交易·股票数据·quantdash
伞伞悦读11 小时前
【第70期】Adam二阶矩不是方差:偏差校正、动量与AdamW完整实验
python
外收内放12 小时前
Python基础语法练习题(73)
java·前端·python
锋行天下12 小时前
Langgraph HITL 中断运行,用户输入后输出打字效果
人工智能·python
时早玖沐13 小时前
给 AstrBot 写一个天气推送插件:12 次提交、6 个坑
python·开源·ai编程
触底反弹13 小时前
🚀 FastAPI 五大重难点深度剖析:从 500 报错到彻底搞懂 Depends、Pydantic 与 SQLAlchemy
python·fastapi