Example #1
0
    def _add_on_channel_close_callback(self, channel):
        """
        Esse método informa para o pika que o método on_channel_closed deve ser chamado quando
        o RabbitMq fecha o canal de forma inesperada.
        
        """
        LOGGER.debug(
            'Adicionando uma callback de fechamento de canal do Consumer')

        channel.add_on_close_callback(self._on_channel_closed)
Example #2
0
    def _on_exchange_declareok(self, unused_frame):
        """Invocado pelo pika quando o RabbitMQ termina o Exchange.Declare RPC
        command.

        :param pika.Frame.Method unused_frame: Exchange.DeclareOk response frame

        """
        LOGGER.debug('Exchange do Publisher declarado.')

        #
        self._setup_queue(queue=self._queue)
Example #3
0
    def _setup_queue(self, queue):
        """
        Configurando a fila no RabbitMQ chamando o RPC Queue.Declare. 
        Quando estiver completo, o método on_queue_declareok será invocado por pika
        
        :param str|unicode queue_name: The name of the queue to declare.

        """
        LOGGER.debug('Declarando Producer Queue (%s)', queue)

        self._channel.queue_declare(queue,
                                    durable=True,
                                    callback=self._on_queue_declareok)
Example #4
0
    def _setup_exchange(self):
        """Configure o exchange no RabbitMQ invocando o RPC Exchange.Declare
        comando. Quando estiver completo, o método on_exchange_declareok
        será invocado por pika.
       
        :param str|unicode exchange_name: The name of the exchange to declare

        """

        LOGGER.debug('Declarando Exchange do Producer: (%s)', self._exchange)

        self._channel.exchange_declare(self._exchange,
                                       self._exchange_type,
                                       durable=True,
                                       callback=self._on_exchange_declareok)
Example #5
0
    def on_channel_open(self, channel):
        """Este método é invocado pelo pika quando o canal foi aberto.
        O objeto do canal é passado para que possamos usá-lo.

        Como o canal agora está aberto, declaramos o exchange também.

        :param pika.channel.Channel channel: The channel object

        """
        LOGGER.debug('Canal Consumer Aberto')  #{}'.format(channel))

        self._channel = channel

        self._add_on_channel_close_callback(channel)

        # Definindo o Exchange:
        self._setup_exchange()
Example #6
0
    def _on_queue_declareok(self, method_frame):
        """Método invocado pelo pika quando a chamada RPC Queue.Declare feita em
        setup_queue foi concluída. Neste método, vamos ligar a fila
        e exchange junto com a chave de roteamento emitindo o QueueBind
        Comando RPC. Quando este comando estiver completo, o método on_bindok
        ser invocado pelo pika.
       
        :param pika.frame.Method method_frame: The Queue.DeclareOk frame

        """
        QUEUE = method_frame.method.queue

        #TODO: Trocar Routing Key - Cada consumidor pode ter o seu;
        LOGGER.debug('Linkando (%s) para (%s) com (%s)', self._exchange, QUEUE,
                     self._server.ROUTING_KEY)

        self._channel.queue_bind(QUEUE,
                                 self._exchange,
                                 self._server.ROUTING_KEY,
                                 callback=self._on_bindok)

        self._start_consuming(QUEUE)