예제 #1
0
    async def test_instantiate_one_consumer_per_handler_multiple_handlers_registered(self):
        app = App(**self.connection_parameters)

        @app.route(["asgard/counts"], vhost="/")
        async def _handler(message):
            return message

        @app.route(["asgard/counts/errors"], vhost="fluentd")
        async def _other_handler(message):
            return message

        consumers = app._build_consumers()
        self.assertEqual(2, len(consumers))

        self.assertEqual(["asgard/counts"], consumers[0].queue_name)
        self.assertEqual("/", consumers[0].vhost)
        queue_connection_parameters = consumers[0].queue.connection_parameters
        self.assertEqual(self.connection_parameters['host'], queue_connection_parameters['host'])
        self.assertEqual(self.connection_parameters['user'], queue_connection_parameters['login'])
        self.assertEqual(self.connection_parameters['password'], queue_connection_parameters['password'])
        self.assertEqual(self.connection_parameters['prefetch_count'], consumers[0].queue.prefetch_count)

        self.assertEqual(["asgard/counts/errors"], consumers[1].queue_name)
        self.assertEqual("fluentd", consumers[1].vhost)
        queue_connection_parameters = consumers[1].queue.connection_parameters
        self.assertEqual(self.connection_parameters['host'], queue_connection_parameters['host'])
        self.assertEqual(self.connection_parameters['user'], queue_connection_parameters['login'])
        self.assertEqual(self.connection_parameters['password'], queue_connection_parameters['password'])
        self.assertEqual(self.connection_parameters['prefetch_count'], consumers[1].queue.prefetch_count)
    async def test_instantiate_one_consumer_per_handler_one_handler_registered(
            self):
        """
        Para cada handler registrado, teremos um Consumer. Esse Consumer conseguirá consumir múltiplas
        filas, se necessário.
        """
        app = App(**self.connection_parameters)

        @app.route(["asgard/counts"], vhost="/")
        async def _handler(message):
            return message

        consumers = app._build_consumers()
        self.assertEqual(1, len(consumers))
        self.assertEqual(["asgard/counts"], consumers[0].queue_name)
        self.assertEqual("/", consumers[0].vhost)

        queue_connection_parameters = consumers[0].queue.connection_parameters
        self.assertEqual(self.connection_parameters['host'],
                         queue_connection_parameters['host'])
        self.assertEqual(self.connection_parameters['user'],
                         queue_connection_parameters['login'])
        self.assertEqual(self.connection_parameters['password'],
                         queue_connection_parameters['password'])
        self.assertEqual(self.connection_parameters['prefetch_count'],
                         consumers[0].queue.prefetch_count)