Metadata-Version: 2.1
Name: kafka-http-proxy
Version: 1.0.0
Summary: Synchronous HTTP to Kafka proxy with request-reply pattern
Home-page: https://github.com/fedorovvl/kafka-http-proxy
Author: Vladimir Fedorov
Author-email: sin@krasno.ru
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: aiokafka==0.8.1
Requires-Dist: kafka-python==2.0.2
Requires-Dist: aiohttp==3.9.1
Requires-Dist: pyyaml==6.0.1
Requires-Dist: uvicorn[standard]==0.24.0
Requires-Dist: prometheus-client==0.19.0
Requires-Dist: python-multipart==0.0.6
Requires-Dist: prometheus-fastapi-instrumentator==6.1.0

# Kafka HTTP Proxy

Синхронный прокси для передачи HTTP запросов через Apache Kafka с паттерном request-reply.

## Установка

```bash
pip install git+https://github.com/fedorovvl/kafka-http-proxy.git
```

## Быстрый старт
Прокси (сервер А)

```bash
# Переменные окружения
export KAFKA_BOOTSTRAP_SERVERS=kafka:9092
export WARMUP_TOPICS=common-responses,orders-responses
export PROXY_PORT=8080

kafka-proxy
```
Или с конфиг файлом:
```bash
kafka-proxy --config proxy_config.yaml
```

Обработчик (сервер Б)
```bash
export KAFKA_BOOTSTRAP_SERVERS=kafka:9092
export KAFKA_TOPICS=orders:orders-requests,orders-responses,http://backend:8080
kafka-processor
```

## Архитектура
```text

Клиент → Nginx → Прокси → Kafka → Обработчик → Бекенд
                        ↑________________________↓
                        (синхронный ответ через Kafka)
```
## Docker
```bash
cd examples
docker-compose up -d
```
## Метрики

Prometheus метрики доступны на /metrics:
- 
    proxy_requests_total - количество запросов
    proxy_request_latency_seconds - латентность запросов
    proxy_pending_requests - ожидающие запросы
    processor_messages_total - обработанные сообщения
    processor_latency_seconds - латентность обработки

