Metadata-Version: 2.1
Name: wdg-kombu-sdk
Version: 0.1.0
Summary: Reusable Kombu-based publisher/consumer SDK for Django projects.
Home-page: https://github.com/yourusername/wdg-kombu-sdk
Author: Your Name
Author-email: your.email@example.com
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: Framework :: Django
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown

# wdg-kombu-sdk

A reusable Kombu-based publisher/consumer SDK for Django projects. Easily connect to any message broker (RabbitMQ, Redis, etc.) using Django settings and environment variables.

## Features
- Generic broker connection using Kombu
- Publisher and consumer classes for events
- Django settings integration (set broker URL in `.env` or `settings.py`)
- Ready for packaging and PyPI publishing

## Installation

```bash
pip install wdg-kombu-sdk
```

Or clone and install locally:

```bash
pip install -r requirements.txt
python setup.py install
```

## Configuration

Add your broker URL to your Django `.env` or `settings.py`:

```
BROKER_URL=amqp://guest:guest@localhost:5672//
```

or in `settings.py`:

```python
import os
BROKER_URL = os.environ.get('BROKER_URL', 'amqp://guest:guest@localhost:5672//')
```

## Usage

### Publisher Example

```python
from wdg_kombu_sdk.publisher import EventPublisher

publisher = EventPublisher()  # Uses settings.BROKER_URL by default
publisher.publish_event('user.created', {"id": 1, "name": "Alice"})
```

### Consumer Example

```python
from wdg_kombu_sdk.consumer import EventConsumer

def my_callback(body, message):
    print(body)
    message.ack()

consumer = EventConsumer('order_saga_compensator', callback=my_callback)  # Uses settings.BROKER_URL by default
consumer.start()
```

## Advanced Usage

You can override the broker URL or exchange/queue settings if needed:

```python
publisher = EventPublisher(broker_url='redis://localhost:6379/0', exchange_name='my_events')
consumer = EventConsumer('my_queue', broker_url='redis://localhost:6379/0', exchange_name='my_events')
```

## Publishing to PyPI

1. Update `setup.py` with the correct package information.
2. Build the distribution:

```bash
python setup.py sdist bdist_wheel
```

3. Upload to PyPI using `twine`:

```bash
twine upload dist/*
```

---

## License

MIT


