liveBook · Manning

Event-driven architecture

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

Event-driven architecture is a software architecture in which components communicate and react through events.

Event-driven architecture connects components through events so external asset movements can update an inventory system in real time. Apache Kafka receives events and delivers them to consumers. section 5.2

Asset-location updates

A Kafka consumer reads JSON messages from the asset_location topic, creates AssetLocationUpdated events, and publishes them through a mediator. AssetManager handles those events and records each asset’s coordinates and timestamp. section 5.2

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

Use the Docker Compose configuration to launch Kafka with Zookeeper locally before creating and consuming the asset_location topic. section 5.2

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

How deep it goes
Explains local Kafka setup, topic commands, consumers, events, and mediator-based decoupling, but stops short of production operations.
Examples
Demonstrates asset_location topics, JSON location events, Docker Compose, Kafka commands, and an AssetLocationMediator.
What it assumes
Assumes an inventory domain and hexagonal architecture while teaching Kafka setup, topic management, and event consumption.
What you can do after
Builds a local Kafka workflow and refines generated consumers to publish domain events without direct service coupling.
How it connects
Connects Apache Kafka with Docker, Python consumers, hexagonal architecture, mediators, and domain models.

Also explained in

Compare how 10 books explain event-driven architecture →

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.