Skip to main content

Набор компонентов для интеграции explicit с kafka

Project description

Explicit-Kafka

Набор компонентов для интеграции explicit с kafka.

Содержит реализацию адаптера обмена сообщениями через Kafka.

Пример использования

Настройка адаптера

# persons/core/apps.py
from django.apps.config import AppConfig as AppConfigBase


class AppConfig(AppConfigBase):

    name = __package__
    
    def _setup_adapter(self):
        from explicit.kafka.adapters.messaging import Adapter
        from explicit.kafka.adapters.messaging import PublishConfig
        from explicit.kafka.adapters.messaging import SubscribeConfig

        from persons import core
        
        # конфигурация адаптера
        adapter_base_config = {'bootstrap.servers': 'kafka:9092'}
        publish_config = PublishConfig(adapter_base_config)
        subscribe_config = SubscribeConfig(adapter_base_config | {'group.id': f'edu.persons'})
    
        adapter = Adapter(subscribe_config=subscribe_config, publish_config=publish_config)
        core.adapter = adapter

    def ready(self):
        self._setup_adapter()

Отправка сообщений

# persons/core/persons/services/handlers/events.py

def on_person_created(
    event: 'PersonCreated',
    messaging_adapter: 'AbstractMessagingAdapter'
):
    messaging_adapter.publish('edu.persons.person', event.dump())

Подписка на сообщения

# education/entrypoints/eventconsumer.py

def bootstrap():
    import json
    
    from education.core import adapter
    from education.core import bus
    from education.core.persons.domain.events import PersonCreated 
    
    TOPIC_EVENTS = {
      'edu.persons.person': PersonCreated,
    }
    
    for message in adapter.subscribe(*TOPIC_EVENTS):
       for message in adapter.subscribe(*TOPIC_EVENTS):
          event = TOPIC_EVENTS[message.topic()](
              **json.loads(message.value())
          )
          bus.handle(event)

bootstrap()

Запуск тестов

$ tox

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

explicit_kafka-1.1.0.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

explicit_kafka-1.1.0-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file explicit_kafka-1.1.0.tar.gz.

File metadata

  • Download URL: explicit_kafka-1.1.0.tar.gz
  • Upload date:
  • Size: 7.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.11.1 readme-renderer/43.0 requests/2.32.3 requests-toolbelt/1.0.0 urllib3/2.2.1 tqdm/4.66.5 importlib-metadata/7.1.0 keyring/25.2.1 rfc3986/2.0.0 colorama/0.4.6 CPython/3.12.4

File hashes

Hashes for explicit_kafka-1.1.0.tar.gz
Algorithm Hash digest
SHA256 c865bbbda60d5f02400d9d3e9fcdb77e8ce9eac3eff1f8d0bfc4207152f8f0f4
MD5 b3831610ccd0ee75867d18728083fe73
BLAKE2b-256 ec1c193c6b2562b880f07717da5ec7dfeae2faa2e943dee3da86085099a2949d

See more details on using hashes here.

File details

Details for the file explicit_kafka-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: explicit_kafka-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.11.1 readme-renderer/43.0 requests/2.32.3 requests-toolbelt/1.0.0 urllib3/2.2.1 tqdm/4.66.5 importlib-metadata/7.1.0 keyring/25.2.1 rfc3986/2.0.0 colorama/0.4.6 CPython/3.12.4

File hashes

Hashes for explicit_kafka-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f0fe278ef80ff6358c1d25e7a27e046ec7f19347755cd8f183042ea73a368b98
MD5 95c2a9bd73752738a07dddc8ee9773dc
BLAKE2b-256 1e086c0cc041a551420fbebf82e99eea039961d2ec421807d54a1f930efc0e17

See more details on using hashes here.

Supported by

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