liveBook · Manning

Apache Kafka

As explained in AI-Powered Developer: Build software with ChatGPT and Copilot

Apache Kafka is a distributed event-streaming platform for building real-time data pipelines and streaming applications.

Apache Kafka is a distributed streaming platform for real-time data pipelines and streaming applications. It accepts streams from multiple sources and delivers them to multiple consumers, serving as a middle layer for real-time data exchange. Its append-only, immutable data model suits substantial real-time or near-real-time event volumes, not record updates, deletions, or complex queries. section 5.2 section 5.4

A practical use is asset-location monitoring: an external system emits movement events, Kafka receives them on the asset_location topic, and a consumer turns each event into a domain update. Keep the consumer focused on translating and publishing events rather than directly reaching into a central application object; a Mediator can route AssetLocationUpdated events to the appropriate handler and reduce coupling. section 5.2 section 5.4

Listing 5.13 Docker Compose file to launch Kafka with Zookeeper
version: '2.1'
  
services:
  zookeeper:
    image: confluentinc/cp-zookeeper:7.3.2
    container_name: zookeeper
    ports:
      - "2181:2181"
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_SERVER_ID: 1
      ZOOKEEPER_SERVERS: zoo1:2888:3888
  
  kafka:
    image: confluentinc/cp-kafka:7.3.2
    hostname: kafka
    container_name: kafka
    ports:
      - "9092:9092"
      - "29092:29092"
      - "9999:9999"
    environment:
      KAFKA_ADVERTISED_LISTENERS: 
            INTERNAL://kafka:19092,EXTERNAL://
            ${DOCKER_HOST_IP:127.0.0.1}:9092,
            DOCKER://host.docker.internal:29092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT,
DOCKER:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
      KAFKA_BROKER_ID: 1
      KAFKA_LOG4J_LOGGERS: "kafka.controller=
            INFO,kafka.producer.async
            .DefaultEventHandler=INFO,
            state.change.logger=INFO"
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_JMX_PORT: 9999
      KAFKA_JMX_HOSTNAME: ${DOCKER_HOST_IP:-127.0.0.1}
      KAFKA_AUTHORIZER_CLASS_NAME: kafka.security.authorizer.AclAuthorizer
      KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND: "true"
    depends_on:
      - zookeeper

Run Kafka locally with Docker Compose alongside Zookeeper. Treat generated setup as a starting point: verify image versions and hardware compatibility rather than assuming an AI-generated configuration is current. section 5.2

Work with a local topic through the Kafka console:

  • List topics, then create asset_location with one partition and replication factor 1. section 5.2
  • Produce JSON location messages containing an asset ID, latitude, longitude, and timestamp. section 5.2
  • Consume messages from the beginning to inspect the stream, then delete the topic when the experiment is complete. section 5.2

Location-update consumer

A Python KafkaConsumer subscribes to asset_location, deserializes each JSON message, and constructs an AssetLocationUpdated event. Publishing that event through a mediator lets AssetManager register its update handler without making the Kafka adapter depend directly on AssetManager. Test with several timestamped location messages and confirm that each produces the expected location history update. section 5.2

How AI-Powered Developer: Build software with ChatGPT and Copilot covers it

How deep it goes
Defines Kafka, configures a local Docker deployment, creates topics, and implements a Python consumer; defers broker internals.
Examples
Demonstrates Docker Compose, asset_location console commands, JSON location events, and a Python consumer mediated by AssetLocationUpdated.
What it assumes
Assumes Python, Docker, and an existing domain model while supplying Kafka-specific setup and consumer examples.
What you can do after
Operate/configure Kafka locally, create and exercise a topic, and route consumed location events through a mediator.
How it connects
Connects Kafka with event-driven architecture, Docker, Zookeeper, the Mediator pattern, and hexagonal architecture.

Also explained in

Compare how 6 books explain Apache Kafka →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of AI-Powered Developer: Build software with ChatGPT and Copilot. The section links point to the parts of the book it draws on.