X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_mon%2Fcore%2Fmessage_bus%2Fcommon_consumer.py;h=e32fa2bba7e691977598cec7e7d6a52e666a61ef;hb=27784a805d77f11d049e9a16704e6977e6967e85;hp=b2677d877f2f5ad027252f12d3088209cabd6081;hpb=4da146638bc3838270fa41c9f9fb91961f726c97;p=osm%2FMON.git diff --git a/osm_mon/core/message_bus/common_consumer.py b/osm_mon/core/message_bus/common_consumer.py index b2677d8..e32fa2b 100755 --- a/osm_mon/core/message_bus/common_consumer.py +++ b/osm_mon/core/message_bus/common_consumer.py @@ -22,6 +22,7 @@ import json import logging import sys +import time from json import JSONDecodeError import six @@ -51,10 +52,6 @@ log = logging.getLogger(__name__) kafka_logger = logging.getLogger('kafka') kafka_logger.setLevel(logging.getLevelName(cfg.OSMMON_KAFKA_LOG_LEVEL)) -kafka_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') -kafka_handler = logging.StreamHandler(sys.stdout) -kafka_handler.setFormatter(kafka_formatter) -kafka_logger.addHandler(kafka_handler) class CommonConsumer: @@ -91,8 +88,22 @@ class CommonConsumer: topics = ['metric_request', 'alarm_request', 'vim_account'] common_consumer.subscribe(topics) - common_consumer.poll() - common_consumer.seek_to_end() + retries = 1 + max_retries = 5 + while True: + try: + common_consumer.poll() + common_consumer.seek_to_end() + break + except Exception: + log.error("Error getting Kafka partitions. Maybe Kafka is not ready yet.") + log.error("Retry number %d of %d", retries, max_retries) + if retries >= max_retries: + log.error("Achieved max number of retries. Logging exception and exiting...") + log.exception("Exception: ") + return + retries = retries + 1 + time.sleep(2) log.info("Listening for messages...") for message in common_consumer: @@ -183,7 +194,7 @@ class CommonConsumer: key = key.replace('request', 'response') producer = Producer() producer.send(topic=topic, key=key, value=json.dumps(msg)) - producer.flush() + producer.flush(timeout=5) producer.close()