Python kafka 包与 heroku 的 kafka 一起使用。您只需要您的 heroku api 密钥和应用程序名称
项目描述
# Heroku Kafka Easy-E
**非官方包**
Heroku Kafka 是一个 python 包,可帮助您在 Heroku 上快速轻松地设置 Kafka。有一个 [官方包](https://github.com/heroku/kafka-helper) 但是它似乎不再被维护了。
## 安装
安装包最简单的方法是通过 pip。
```
pip install heroku-kafka-
eze pip3 install heroku-kafka-eze
```
## 用法
这个包使用 [kafka-python 包](https://github.com/dpkp/kafka-python) 和`HerokuKafkaProducer` 和 `HerokuKafkaConsumer` 类都继承自 kafka-python 基类,并且将包含所有相同的方法。
它还使用 [heroku3 包] (https://github.com/martyzz1/heroku3.py),它是 heroku api 的 python 包装器。
注意:您也可以在本地使用此包。
注意:要测试它是否在本地运行,我只需将 heroku CLI 与 heroku-kafka 插件一起使用或安装 [heroku-kafka-util](https://github.com/osada9000/heroku-kafka-util),这样您就可以查看正在发送的消息。
### Producer
```python
from heroku_kafka_eze import HerokuSSL
from heroku_kafka_eze import HerokuKafkaProducer
app_name = 'your_heroku_app_name'
secret_key = 'your_heroku_api_key'
heroku_ssl = HerokuSSL(app_name, secret_key)
config = heroku_ssl.get_config()
"""
所有需要从 heroku 接收的配置变量。
"""
producer = HerokuKafkaProducer(
url=config['KAFKA_URL'], # Heroku 提供的 Url 字符串
ssl_cert=config['KAFKA_CLIENT_CERT'], # 客户端证书字符串
ssl_key=config['KAFKA_CLIENT_CERT_KEY'], # 客户端证书密钥字符串
ssl_ca =config['KAFKA_TRUSTED_CERT'], # Client trust cert string
prefix=config['KAFKA_PREFIX'] # Prefix provided by heroku
)
"""
.send 方法会自动为您的主题添加 KAFKA_PREFIX
注意:如果消息没有似乎正在发送尝试“producer.flush()”来强制发送。
"""
```
对于所有其他方法和属性,请参阅:[KafkaProducer Docs](https://kafka-python.readthedocs.io/en/master/apidoc/KafkaProducer.html)。
### Consumer
```python
from heroku_kafka_eze import HerokuSSL
from heroku_kafka_eze import HerokuKafkaConsumer
"""
这里的所有变量名都将从 Heroku api 接收
*主题是可选的,您可以传递任意数量的数据以供消费者跟踪,
但是,如果您想在创建后订阅,只需使用 .subscribe 如下所示。
注意:KAFKA_PREFIX 将自动添加,因此不必担心将其传入。
"""
app_name = 'your_heroku_app_name'
secret_key = 'your_heroku_api_key'
heroku_ssl = HerokuSSL(app_name, secret_key)
config = heroku_ssl.get_config()
consumer = HerokuKafkaConsumer(
'topic_without_prefix', # 可选:你根本不需要传递任何主题
'topic_without_prefix_2', # 你可以列出尽可能多的主题想消费
url=config['KAFKA_URL'], #heroku 提供的 Url 字符串
ssl_cert=config['KAFKA_CLIENT_CERT'], # 客户端证书字符串
ssl_key=config['KAFKA_CLIENT_CERT_KEY'], # 客户端证书密钥字符串
ssl_ca=config[' KAFKA_TRUSTED_CERT'], # 客户端信任的证书字符串
prefix=config['KAFKA_PREFIX'] # Heroku 提供的前缀
)
"""
在没有KAFKA_PREFIX 的主题列表中创建消费者传递后订阅主题 。
"""
consumer.subscribe(topics=('topic_without_prefix'))
"""
.assign 需要一个完整的主题名称,前缀为
"""
consumer.assign([TopicPartition('topic_with_prefix', 2)])
"""
收听events 它与 kafka_python 中的完全相同。
阅读下面链接的文档以获取更多信息!
"""
for msg in consumer:
print (msg)
```
所有其他方法和属性请参考:[KafkaConsumer Docs](https://kafka-python.readthedocs.io/en/master/apidoc/KafkaConsumer.html )。
- `.assign` 不添加主题前缀。
- .NamedTemporaryFile 在 Windows 系统上可能无法正常工作
## 贡献
如果您遇到任何问题,请随时 fork 并创建 PR!
## 设置
Fork repo,设置 virtualenv 和 pip install
```bash
>>> git clone git@github.com:<fork-repo>.git
>>> cd <fork-repo>
>>> virtualenv -p python3 venv
>>> source venv/bin/activate
>>> pip install -r requirements.txt
```
创建一个 config.py 文件,其中包含工作 heroku api 密钥和你的应用程序的名称。
```
APP_NAME=""
SECRET_KEY=""
TOPIC1=""
TOPIC2=""
请确保您编写的任何额外代码都带有测试,它不需要超出顶部,只需检查您编写的作品即可。
目前所有测试都需要一个有效的 kafka 设置,因为没有它们很难检查它是否正确连接。
运行测试:
```bash
>>> python test.py
```
**非官方包**
Heroku Kafka 是一个 python 包,可帮助您在 Heroku 上快速轻松地设置 Kafka。有一个 [官方包](https://github.com/heroku/kafka-helper) 但是它似乎不再被维护了。
## 安装
安装包最简单的方法是通过 pip。
```
pip install heroku-kafka-
eze pip3 install heroku-kafka-eze
```
## 用法
这个包使用 [kafka-python 包](https://github.com/dpkp/kafka-python) 和`HerokuKafkaProducer` 和 `HerokuKafkaConsumer` 类都继承自 kafka-python 基类,并且将包含所有相同的方法。
它还使用 [heroku3 包] (https://github.com/martyzz1/heroku3.py),它是 heroku api 的 python 包装器。
注意:您也可以在本地使用此包。
注意:要测试它是否在本地运行,我只需将 heroku CLI 与 heroku-kafka 插件一起使用或安装 [heroku-kafka-util](https://github.com/osada9000/heroku-kafka-util),这样您就可以查看正在发送的消息。
### Producer
```python
from heroku_kafka_eze import HerokuSSL
from heroku_kafka_eze import HerokuKafkaProducer
app_name = 'your_heroku_app_name'
secret_key = 'your_heroku_api_key'
heroku_ssl = HerokuSSL(app_name, secret_key)
config = heroku_ssl.get_config()
"""
所有需要从 heroku 接收的配置变量。
"""
producer = HerokuKafkaProducer(
url=config['KAFKA_URL'], # Heroku 提供的 Url 字符串
ssl_cert=config['KAFKA_CLIENT_CERT'], # 客户端证书字符串
ssl_key=config['KAFKA_CLIENT_CERT_KEY'], # 客户端证书密钥字符串
ssl_ca =config['KAFKA_TRUSTED_CERT'], # Client trust cert string
prefix=config['KAFKA_PREFIX'] # Prefix provided by heroku
)
"""
.send 方法会自动为您的主题添加 KAFKA_PREFIX
注意:如果消息没有似乎正在发送尝试“producer.flush()”来强制发送。
"""
```
对于所有其他方法和属性,请参阅:[KafkaProducer Docs](https://kafka-python.readthedocs.io/en/master/apidoc/KafkaProducer.html)。
### Consumer
```python
from heroku_kafka_eze import HerokuSSL
from heroku_kafka_eze import HerokuKafkaConsumer
"""
这里的所有变量名都将从 Heroku api 接收
*主题是可选的,您可以传递任意数量的数据以供消费者跟踪,
但是,如果您想在创建后订阅,只需使用 .subscribe 如下所示。
注意:KAFKA_PREFIX 将自动添加,因此不必担心将其传入。
"""
app_name = 'your_heroku_app_name'
secret_key = 'your_heroku_api_key'
heroku_ssl = HerokuSSL(app_name, secret_key)
config = heroku_ssl.get_config()
consumer = HerokuKafkaConsumer(
'topic_without_prefix', # 可选:你根本不需要传递任何主题
'topic_without_prefix_2', # 你可以列出尽可能多的主题想消费
url=config['KAFKA_URL'], #heroku 提供的 Url 字符串
ssl_cert=config['KAFKA_CLIENT_CERT'], # 客户端证书字符串
ssl_key=config['KAFKA_CLIENT_CERT_KEY'], # 客户端证书密钥字符串
ssl_ca=config[' KAFKA_TRUSTED_CERT'], # 客户端信任的证书字符串
prefix=config['KAFKA_PREFIX'] # Heroku 提供的前缀
)
"""
在没有KAFKA_PREFIX 的主题列表中创建消费者传递后订阅主题 。
"""
consumer.subscribe(topics=('topic_without_prefix'))
"""
.assign 需要一个完整的主题名称,前缀为
"""
consumer.assign([TopicPartition('topic_with_prefix', 2)])
"""
收听events 它与 kafka_python 中的完全相同。
阅读下面链接的文档以获取更多信息!
"""
for msg in consumer:
print (msg)
```
所有其他方法和属性请参考:[KafkaConsumer Docs](https://kafka-python.readthedocs.io/en/master/apidoc/KafkaConsumer.html )。
- `.assign` 不添加主题前缀。
- .NamedTemporaryFile 在 Windows 系统上可能无法正常工作
## 贡献
如果您遇到任何问题,请随时 fork 并创建 PR!
## 设置
Fork repo,设置 virtualenv 和 pip install
```bash
>>> git clone git@github.com:<fork-repo>.git
>>> cd <fork-repo>
>>> virtualenv -p python3 venv
>>> source venv/bin/activate
>>> pip install -r requirements.txt
```
创建一个 config.py 文件,其中包含工作 heroku api 密钥和你的应用程序的名称。
```
APP_NAME=""
SECRET_KEY=""
TOPIC1=""
TOPIC2=""
请确保您编写的任何额外代码都带有测试,它不需要超出顶部,只需检查您编写的作品即可。
目前所有测试都需要一个有效的 kafka 设置,因为没有它们很难检查它是否正确连接。
运行测试:
```bash
>>> python test.py
```