version: "2.4" services: zookeeper-1: image: confluentinc/cp-zookeeper hostname: zookeeper-1 ports: - 12181:2181 environment: ZOOKEEPER_SERVER_ID: "1" ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_SERVERS: zookeeper-1:2888:3888 ZOOKEEPER_4LW_COMMANDS_WHITELIST: "*" KAFKA_HEAP_OPTS: "-Xmx256M -Xms256M" kafka-1: image: confluentinc/cp-kafka:5.3.4 hostname: kafka-1 ports: - 19092:19092 depends_on: - zookeeper-1 environment: KAFKA_LISTENERS: "INTERNAL://kafka-1:9092,EXTERNAL://:19092" KAFKA_ADVERTISED_LISTENERS: "INTERNAL://kafka-1:9092,EXTERNAL://localhost:19092" KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT" KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false" KAFKA_ZOOKEEPER_CONNECT: "zookeeper-1:2181" KAFKA_BROKER_ID: "1" KAFKA_HEAP_OPTS: "-Xmx512M -Xms512M" KAFKA_TRANSACTIONAL_ID_EXPIRATION_MS: 5000 # forcing both: ProducerState timeout to 5 seconds KAFKA_LOG_RETENTION_MS: 5000 # forcing both: kafka retention to 5 seconds KAFKA_LOG_RETENTION_CHECK_INTERVAL_MS: 2000 KAFKA_LOG_ROLL_MS: 1000 producer: build: ./producer environment: JAVA_OPTS: "-Xmx128M -Xms128M" KAFKA_BOOTSTRAP_SERVERS: "kafka-1:9092" TOPIC: "sample" REPLICATION_FACTOR: 1 NUMBER_OF_PARTITIONS: 1 MESSAGE_BACKOFF: 30000 # sleep 30 seconds after sending another message KAFKA_ACKS: "all" KAFKA_ENABLE_IDEMPOTENCE: "true" depends_on: - kafka-1