Skip to main content

Kafka

Architecture Decision

Asynchronous Messaging (Kafka Strimzi)

For event-driven workflows and decoupled communication within the Kubernetes cluster, the platform uses Apache Kafka managed by the Strimzi operator.

  • Role: Provides a robust, scalable message bus for internal asynchronous communication.
  • Key Features:
    • Service Decoupling: Allows services to communicate without direct dependencies, enhancing overall system fault tolerance.
    • Strimzi Operator: Simplifies Kafka management using Kubernetes-native Custom Resources (CRDs) for brokers, topics, and users.
    • Reliability: Ensures high availability and persistence of data streams across internal service boundaries.

Integration Principles

  • Topic naming follows domain-oriented conventions such as NotificationEvents.CREATED, RegistrationEvents.CREATED, and payment.market_order.v1.
  • Consumer groups are service-specific, for example core-payment-service, user-service, notification-service, and media-service.
  • Kafka is used for asynchronous event delivery, downstream notification, CDC-style compliance ingestion planning, and blockchain event normalization.
  • Offset handling is explicit where required; the Blockchain Event Service uses EARLIEST offset reset for raw event processing.

Service-by-Service Integration Overview

DEUSS Core Payment Service

Status: Enabled (consumers only, no producers)

TopicEventListenerPurpose
BondRegistryEvents.BOND_PUBLISHEDBondPublishedEventBondPublishedListenerNew bond published → validate and generate paydays
BlockchainEvents.COUNTER_OFFERCounterOfferEventCounterOfferListenerCounter-offer created → trigger payment creation
BlockchainEvents.DEAL_CREATEDDealCreatedEventDealCreatedListenerDeal created → record payment and notify the PSP

Configuration:

kafka:
group-id: ${KAFKA_GROUP_ID:`core-payment-service`}

Blockchain Event Service

Kafka Integration

Consumer
  • Consumes raw blockchain logs from EventerEvents.RAW_DATA
  • Uses EARLIEST offset reset
  • Persists processing results
  • Skips events already marked as PROCESSED
Producers

Publishes normalized events to the Interest Discovery, Bond Registry, and Fungible Token event domains.

The service is therefore both:

  • a Kafka consumer of infrastructure-level blockchain events
  • a Kafka producer of business-level DEUSS events

Broker Platform User Service

Kafka Integration

Status: Enabled

Producers
  • user registration events
  • passkey-created events
Consumer
  • originator employee updates

Kafka is used for:

  • propagating user lifecycle events
  • synchronizing originator roles based on company membership changes
  • notifying downstream services about passkey and on-chain account creation

Broker Platform Payment Service

Kafka Integration

Status: No direct Kafka producers or consumers were identified in the analyzed service source.

Although the service depends on shared Kafka libraries, the payment workflow is implemented primarily through:

  • REST APIs
  • scheduled or service-level processing
  • internal HTTP clients
  • external Payment Service Provider (PSP) callbacks

Any event-driven processing is not explicitly verified in the available Payment Service source.

Broker Platform Notification Service

Kafka Producers & Consumers

Producers

No Kafka producers were identified in the service.

Consumers
  • NotificationEvents.CREATED
    • Receives a notification creation event.
    • Creates one persisted notification record per recipient user.

Kafka is used for asynchronous notification creation events.

Broker Platform Media Service

Kafka Producers & Consumers

Producers
  • {requestingService}.resizing.result
    • Notifies the requesting service that processing completed.
    • Returns the generated thumbnail key.
    • Reports success or a processing error.
Consumers
  • media.resizing.requested
    • Requests image thumbnail generation.

Kafka is used for asynchronous request processing and result notification.

Broker Platform Bond Issuance Service

Kafka Producers & Consumers

Producers
  • NotificationEvents.CREATED
    • Publishes bond-related notification events for the Notification Service.
Consumers

No Kafka consumers were verified in the inspected application source.

Kafka publishes bond-related notification events consumed by the Notification Service.