import configparser import os class AMQAdapter: PREFIX: str = 'cm.amq-adapter.' def __init__(self, config: configparser.ConfigParser): """ cm.amq-adapter.service-name=amq-adapter cm.amq-adapter.generator-id=164 cm.amq-adapter.route-mapping= :param config: config parser to read configuration values """ self.generator_id = config.getint('CleverMicro-AMQ', self.PREFIX + 'generator-id', fallback=164) self.service_name = config.get('CleverMicro-AMQ', self.PREFIX + 'service-name', fallback='amq-python-adapter-'+self.generator_id) self.route_mapping = config.get('CleverMicro-AMQ', self.PREFIX + 'route-mapping', fallback=None) def adapter_prefix(self) -> str: return f"{self.service_name}-{self.generator_id}-" class Dispatch: PREFIX: str = 'cm.dispatch.' def __init__(self, config: configparser.ConfigParser): """ cm.dispatch.use-dlq=true cm.dispatch.use-confirms=false cm.dispatch.amq-host=rabbitmq cm.dispatch.amq-port=5672 cm.dispatch.amq-port-tls=5671 cm.dispatch.service-host= cm.dispatch.service-port=8080 :param config: config parser to read configuration values """ self.use_dlq = config.getboolean('CleverMicro-AMQ', self.PREFIX + 'use-dlq', fallback=False) self.use_confirms = config.getboolean('CleverMicro-AMQ', self.PREFIX + 'use-confirms', fallback=False) self.amq_host = config.get('CleverMicro-AMQ', self.PREFIX + 'amq-host', fallback='rabbitmq') self.amq_port = config.getint('CleverMicro-AMQ', self.PREFIX + 'amq-port', fallback=5672) self.amq_port_tls = config.getint('CleverMicro-AMQ', self.PREFIX + 'amq-port-tls', fallback=5671) self.service_host = config.get('CleverMicro-AMQ', self.PREFIX + 'service-host', fallback='rabbitmq') self.service_port = config.getint('CleverMicro-AMQ', self.PREFIX + 'service-port', fallback=8080) self.rabbit_mq_user = os.environ["RABBIT_MQ_USER"] self.rabbit_mq_password = os.environ["RABBIT_MQ_PASSWORD"] class Backpressure: PREFIX: str = 'cm.backpressure.' def __init__(self, config: configparser.ConfigParser): """ cm.backpressure.threshold=20 cm.backpressure.time-window=3000 cm.backpressure.management-service-url=management-service:8080 :param config: config parser to read configuration values """ self.management_service_url = config.get('CleverMicro-AMQ', self.PREFIX + 'management-service-url', fallback='management-service:8080') self.threshold = config.getint('CleverMicro-AMQ', self.PREFIX + 'threshold', fallback=20) self.time_window = config.getint('CleverMicro-AMQ', self.PREFIX + 'time-window', fallback=3000) class AMQConfiguration: def __init__(self): config = configparser.ConfigParser() # Read the application.properties file config.read('config/application.properties') # # Add individual config areas # self.amq_adapter: AMQAdapter = AMQAdapter(config) self.dispatch: Dispatch = Dispatch(config) self.backpressure: Backpressure = Backpressure(config)