Exemplo n.º 1
0
    async def get_review_messages(self):
        class Consumer(AbstractConsumer):
            def __init__(self, channel, queue_name, plugin):
                self.plugin = plugin
                super().__init__(channel, queue_name)

            def run(self, message: Message):
                """Dispatch the message to the correct handler."""
                msg = json.loads(message.body)

                if msg['_meta']['routing_key'] == 'mozreview.commits.published':
                    asyncio.ensure_future(self.plugin.handle_review_requested(message), loop=self.plugin.bot.loop)
                elif msg['_meta']['routing_key'] == 'mozreview.review.published':
                    asyncio.ensure_future(self.plugin.handle_reviewed(message), loop=self.plugin.bot.loop)

        conn = Connection(host=self.host, port=self.port, ssl=self.ssl, userid=self.userid, password=self.password,
                virtual_host=self.vhost)
        channel = conn.channel()
        channel.queue_declare(queue=self.queue_name, durable=True, auto_delete=False)
        channel.queue_bind(self.queue_name, exchange=self.exchange_name, routing_key=self.routing_key)
        consumer = Consumer(channel, self.queue_name, self)
        consumer.declare()

        while True:
            if getattr(self.bot, 'protocol', None) and irc_channel in self.bot.channels: break # Check if connected to IRC
            else: await asyncio.sleep(.001, loop=self.bot.loop)

        while True:
            try:
                conn.drain_events(timeout=self.timeout)
            except Timeout:
                await asyncio.sleep(.001, loop=self.bot.loop)
Exemplo n.º 2
0
    async def get_review_messages(self):
        class Consumer(AbstractConsumer):
            def __init__(self, channel, queue_name, plugin):
                self.plugin = plugin
                super().__init__(channel, queue_name)

            def run(self, message: Message):
                """Dispatch the message to the correct handler."""
                msg = json.loads(message.body)

                if msg['_meta'][
                        'routing_key'] == 'mozreview.commits.published':
                    asyncio.ensure_future(
                        self.plugin.handle_review_requested(message),
                        loop=self.plugin.bot.loop)
                elif msg['_meta'][
                        'routing_key'] == 'mozreview.review.published':
                    asyncio.ensure_future(self.plugin.handle_reviewed(message),
                                          loop=self.plugin.bot.loop)

        conn = Connection(host=self.host,
                          port=self.port,
                          ssl=self.ssl,
                          userid=self.userid,
                          password=self.password,
                          virtual_host=self.vhost)
        channel = conn.channel()
        channel.queue_declare(queue=self.queue_name,
                              durable=True,
                              auto_delete=False)
        channel.queue_bind(self.queue_name,
                           exchange=self.exchange_name,
                           routing_key=self.routing_key)
        consumer = Consumer(channel, self.queue_name, self)
        consumer.declare()

        while True:
            if getattr(self.bot, 'protocol',
                       None) and irc_channel in self.bot.channels:
                break  # Check if connected to IRC
            else:
                await asyncio.sleep(.001, loop=self.bot.loop)

        while True:
            try:
                conn.drain_events(timeout=self.timeout)
            except Timeout:
                await asyncio.sleep(.001, loop=self.bot.loop)
class RabbitPipe(GenericPipe):
    def __init__(self, ip_rabbit, port_rabbit, listen_queue_name, callback_func):
        self.listen_queue_name = listen_queue_name
        self.conn = Connection(host=ip_rabbit, port=port_rabbit)
        self.ch = self.conn.channel()
        self.ch.queue_declare(self.listen_queue_name + '.q', durable=True, auto_delete=False)
        self.r_listen = RabbitListener(callback_func, self.ch, self.listen_queue_name + '.q')

    def start(self):
        self.r_listen.declare()
        # wait for events, which will receive delivered messages and call any consumer callbacks
        while True:
            self.conn.drain_events(timeout=None)

    def recover_unacked(self):
        self.ch.basic_recover(requeue=True)

    def purge(self):
        self.ch.queue_purge(self.listen_queue_name)
import json
from amqpy import Connection, Message, AbstractConsumer, Timeout
conn = Connection()  # connect to guest:guest@localhost:5672 by default
ch = conn.channel()


class Consumer(AbstractConsumer):
    def run(self, msg: Message):
        #print('Received a message: {}'.format(msg.body))
        mesajprimit = json.loads(msg.body)
        print("mesaj primit de la: "+mesajprimit['from'])
        print("mesajul contine:"+mesajprimit['body'])
        msg.ack()

consumer = Consumer(ch, 'test.q')
consumer.declare()

# wait for events, which will receive delivered messages and call any consumer callbacks
while True:
    conn.drain_events(timeout=None)