### A wrapper for [kafka-python](https://kafka-python.readthedocs.io/en/master/usage.html)
#### Installation
Install using pip:
```shell
pip install kafkaPythonWrapper
```
Install from Github:
```shell
git clone https://github.com/Weizhang2017/pythonKakfaWrapper
cd pythonKakfaWrapper
python setup.py install
```
#### CLI
###### Usage
```shell
usage: kafkaPython [-h] --type type --topic topic [--group_id group_id]
--bootstrap_server bootstrap_server [--value value]
[--key key]
Required arguments:
--type type of kafka client, consumer or producer
--topic specify a topic for Kafka
--bootstrap_server specify a bootstrap server for Kafka
Optional arguments:
--group_id specify a group ID for Kafka consumer
--value specify a value to send to Kafka
--key specify a key to send to Kafka
```
The **client type** is either producer or consumer. If the type is producer, the flag **value** is required while **key** is optional. If the type is consumer, the flag **group_id** is required.
###### Simple Examples:
Send a message to Kafka
```shell
kafkaPython --type producer --topic test --bootstrap_server 'localhost:9092' --key test_key --value test_value
```
Print messages from Kafka
```shell
kafkaPython --type consumer --bootstrap_server 'localhost:9092' --topic test --group_id 1
```
#### API
###### Usage
Send the output of a function to Kafka
```python
from kafkaPythonWrapper import MessageSender
message_sender = MessageSender(topic='test')
@message_sender.send_sync()
def produce_message():
key, value = 'email_address', 'wzhang@leadbook.com'
print(f'{key}: {value}')
yield key, value
```
Receive and print messages from Kafka
```python
from kafkaPythonWrapper import MessageCollector
message_collector = MessageCollector(topic='test', group_id='1')
@message_collector.consume
def print_message(**kwargs):
print(kwargs)
```
Close producer or consumer
```python
message_sender.close()
message_collector.close()
```