Source code for base.kafka.config
"""Process-level Kafka configuration shared by all Kafka clients."""
import os
from src.base.retry import load_retry_settings
from src.base.utils import setup_config
HOSTNAME = os.getenv("HOSTNAME", "default_tid")
CONSUMER_GROUP_ID = os.getenv("GROUP_ID", "default_gid")
NUMBER_OF_INSTANCES = int(os.getenv("NUMBER_OF_INSTANCES", 1))
CONFIG = setup_config()
RETRY_SETTINGS = load_retry_settings(CONFIG)
KAFKA_BROKERS = CONFIG["environment"]["kafka_brokers"]
KAFKA_CONSUMER_CONFIG = CONFIG["environment"].get("kafka_consumer", {})
KAFKA_CONSUMER_MAX_POLL_INTERVAL_MS = int(
KAFKA_CONSUMER_CONFIG.get("max_poll_interval_ms", 1_800_000)
)
KAFKA_TRANSACTION_BATCH_CONFIG = CONFIG["environment"].get(
"kafka_transaction_batch", {}
)
KAFKA_TRANSACTION_BATCH_SIZE = int(
os.getenv(
"KAFKA_TRANSACTION_BATCH_SIZE",
KAFKA_TRANSACTION_BATCH_CONFIG.get("size", 100),
)
)
KAFKA_TRANSACTION_BATCH_TIMEOUT_MS = int(
os.getenv(
"KAFKA_TRANSACTION_BATCH_TIMEOUT_MS",
KAFKA_TRANSACTION_BATCH_CONFIG.get("timeout_ms", 50),
)
)
KAFKA_TOPIC_CONFIG = CONFIG["environment"].get("kafka_topics", {})
KAFKA_TOPIC_DEFAULT_PARTITIONS = int(os.getenv("KAFKA_TOPIC_PARTITIONS", 12))
KAFKA_TOPIC_REPLICATION_FACTOR = int(
os.getenv(
"KAFKA_TOPIC_REPLICATION_FACTOR",
KAFKA_TOPIC_CONFIG.get("replication_factor", len(KAFKA_BROKERS) or 1),
)
)
KAFKA_TOPIC_AUTO_EXPAND_PARTITIONS = KAFKA_TOPIC_CONFIG.get(
"auto_expand_partitions", True
)
KAFKA_TOPIC_STAGE_CONFIG = KAFKA_TOPIC_CONFIG.get("stages", {})
KAFKA_TOPIC_EXACT_CONFIG = KAFKA_TOPIC_CONFIG.get("topics", {})
KAFKA_PIPELINE_TOPIC_PREFIXES = (
CONFIG["environment"].get("kafka_topics_prefix", {}).get("pipeline", {})
)
[docs]
def bootstrap_servers() -> str:
"""Return the configured brokers in confluent-kafka format."""
return ",".join(
f"{broker['hostname']}:{broker['internal_port']}" for broker in KAFKA_BROKERS
)