def start_subscriber(): def on_response_received(msg): body = json.loads(msg.body.decode('utf-8')) response_msg.update(body) msg.ack() subscriber = bashtasks_mod.init_subscriber(host=rabbit_host, port=rabbit_port, usr=rabbit_user, pas=rabbit_pass) subscriber.subscribe(on_response_received)
def start_responses_recvr(host='127.0.0.1', port=5672, usr='******', pas='******', stats=None, msgs_dir=None, trace_err_only=False, verbose=False): logger = get_logger(name=curr_module_name()) def count_message_processed(): global pending_tasks pending_tasks = -1 if pending_tasks == -1 else pending_tasks - 1 if pending_tasks == 0: logger.info("Processed all messages... exiting.") stats.sumaryPrettyPrint() stats.closeCsvFile() sys.exit() else: # pending_tasks < 0 -> infinite. > 0 is the nr msgs pending logger.debug('-- still msgs_pending: %d', get_pending_nr()) def handle_response(response_msg): msg = json.loads(response_msg.body.decode('utf-8')) logger.debug(">>>> response received: %s from queue %s correlation_id: %d \ pending_msgs: %d is_error: %s", threading.current_thread().name, TASK_RESPONSES_POOL, msg['correlation_id'], get_pending_nr(), str(is_error(msg))) if verbose: logger.info('---------------------------------------- MSG:') for key, value in msg.items(): logger.info('\t%s:-> %s', key, str(value)) logger.info('---------------------------------------------') stats.trackMsg(msg) if msgs_dir and (not trace_err_only or is_error(msg)): trace_msg(msgs_dir, msg) response_msg.ack() count_message_processed() curr_th_name = threading.current_thread().name logger.info(">> Starting receiver %s connecting to rabbitmq: %s:%s@%s", curr_th_name, usr, pas, host) subscriber = init_subscriber(host=host, port=port, usr=usr, pas=pas) subscriber.subscribe(handle_response)