Skip to main content

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-eze-0.0.2.tar.gz (4.9 kB 查看哈希)

已上传 source