kafka_client 0.2.0

A pure Rust Kafka client library with SASL authentication support
Documentation
# Single-node KRaft Kafka cluster (PLAINTEXT, single broker).
#
# For basic produce/consume tests that don't need replication or
# multiple brokers.  Starts faster and uses less memory than the
# 3-broker cluster.
#
# Internal listener (9092)  — broker-to-broker via container name
# External listener (9093)  — host/client access via localhost:29092
#
# Usage:
#   cd tests
#   podman compose -f docker-compose.single.yml up -d
#   KAFKA_BOOTSTRAP=127.0.0.1:29092 KAFKA_CLUSTER_SIZE=1 \
#     cargo test --test produce_consume --features integration_tests -- --nocapture
#   podman compose -f docker-compose.single.yml down -v

services:
  kafka:
    image: ${KAFKA_IMAGE:-apache/kafka:4.3.0}
    container_name: kafka-single
    hostname: kafka-single
    ports:
      - "29092:9093"   # EXTERNAL — host → Kafka
    environment:
      KAFKA_NODE_ID: 1
      KAFKA_PROCESS_ROLES: broker,controller
      KAFKA_LISTENERS: INTERNAL://0.0.0.0:9092,EXTERNAL://0.0.0.0:9093,CONTROLLER://0.0.0.0:9094
      KAFKA_ADVERTISED_LISTENERS: EXTERNAL://127.0.0.1:29092,INTERNAL://kafka-single:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT,CONTROLLER:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
      KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka-single:9094
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_GROUP_COORDINATOR_REBALANCE_PROTOCOLS: classic
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false"
      KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
      CLUSTER_ID: MkU3OEVBNTcwNTJENDM2Qk
    healthcheck:
      test: ["CMD", "kafka-broker-api-versions.sh", "--bootstrap-server", "127.0.0.1:9092"]
      interval: 5s
      timeout: 10s
      retries: 30
      start_period: 15s