Skip to main content

Event broker built on top of kafka and rabbitmq; used to handle micro services message exchange.

Project description

# Franz

A lite wrapper around [Kafka](https://kafka.apache.org/) and [RabbitMQ](https://www.rabbitmq.com/).

# Usage

## Installation
- `pip install franz` (recommended)
- `pip -e git+git@github.com:eshares/franz.git@master#egg=franz`
- Change `@master` to a version or commit if required.

## RabbitMQ
### Sending a message
```python
import random
import time

import franz


class FranzData(franz.FranzEvent):
def serialize(self):
return {'data': time.time()}


with franz.RabbitProducer(exchange='topic_link') as p:
while True:
key = random.choice(['hello.world', 'hello.bob'])
p.send_message(key, FranzData())
time.sleep(1)
```

### Consuming messages
```python
import franz

def callback(ch, method, properties, body):
print('[+] {} from {}'.format(body, method.routing_key))

with franz.RabbitConsumer('hello.*', exchange='topic_link') as c:
c.consume_messages(callback)
```


## Kafka
### Sending a message
```python
import franz
from myapp.models import SomeModel # SomeModel must inherit `franz.FranzEvent`

instance = SomeModel.objects.get(pk=1)
producer = franz.KafkaProducer()
producer.send_message('TopicA', instance)
```

### Consuming messages
```python
import franz

consumer = franz.KafkaConsumer('TopicA')
for message in consumer:
print(message.value)
```

### Kafka/Docker Resources

- [Docker image](https://github.com/spotify/docker-kafka)
- [Helpful article](https://howtoprogram.xyz/2016/07/21/using-apache-kafka-docker/)
- Create topic
```
./kafka-topics.sh --create --topic test --replication-factor 1 --partitions 1 --zookeeper 0.0.0.0:2181
```
- Consuming
```
./kafka-console-consumer.sh --topic test --from-beginning --zookeeper 0.0.0.0:2181
```
- Producing
```
./kafka-console-producer.sh --topic test --broker-list 0.0.0.0:9092
```

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

franz-0.0.2.tar.gz (2.8 kB view details)

Uploaded Source

File details

Details for the file franz-0.0.2.tar.gz.

File metadata

  • Download URL: franz-0.0.2.tar.gz
  • Upload date:
  • Size: 2.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for franz-0.0.2.tar.gz
Algorithm Hash digest
SHA256 a13b9b991a5a7c49612a694ebd7153b9fd464f00c51ad258d25609733e948d6e
MD5 fda332d137dbe57965b83f8cff45a0da
BLAKE2b-256 5dede39d0f782981fd8b04a62c66fa6a412220cf0fef58042e94dc7558d9f0e4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page