Exemplo n.º 1
0
def main():
    broker = Broker(os.getenv("RABBITMQ_HOST", "localhost"),
                    os.getenv("RABBITMQ_PORT", 5672),
                    os.getenv("RABBITMQ_USER", "guest"),
                    os.getenv("RABBITMQ_PASS", "guest"))

    queue_name = os.getenv("RABBITMQ_QUEUE", "")

    def callback(ch, method, properties, body, data):
        logging.debug(f"Received message on logger: {body}\n\n{data}")

        data['completed_at'] = time.time()
        data['transfer_duration'] = data['completed_at'] - data[
            'created_at'] - data['delay']

        # log the result of each message chain
        logging.info(body)
        logging.info(data)

        # ack the message
        return True

    logging.debug("Waiting for messages")
    broker.consume(queue_name, callback)
Exemplo n.º 2
0
def main():
    broker = Broker(
        os.getenv("RABBITMQ_HOST", "localhost"),
        os.getenv("RABBITMQ_PORT", 5672),
        os.getenv("RABBITMQ_USER", "guest"),
        os.getenv("RABBITMQ_PASS", "guest")
    )

    queue_name = os.getenv("RABBITMQ_QUEUE", "")
    next_queue_name = os.getenv("RABBITMQ_NEXT_QUEUE", "")

    def callback(ch, method, properties, body, data={}):
        logging.debug(f"Received message on {queue_name}: {body} \n\n{data}")
        delay = random.randint(int(os.getenv("RANDOM_WAIT_MIN", 5)), int(os.getenv("RANDOM_WAIT_MAX", 10)))

        # add some tribial data to the message body and the data store
        body["history"].append(queue_name)
        new_data = {
            "_id": data["_id"],
            "updated_at": time.time(),
            queue_name: time.time(),
            "delay": data.get("delay", 0) + delay
        }

        # take some time to do a task
        time.sleep(delay)

        # push the message on to the next service
        logging.debug(f"Publishing message on {next_queue_name}: {body}")
        broker.publish(next_queue_name, body, new_data)

        # True to ack the message
        return True

    logging.debug(f"Waiting for messages {queue_name}")
    broker.consume(queue_name, callback)