我如何在Flask微服务中监听消息队列

时间:2018-12-23 06:33:17

标签: python flask microservices pika

这是我的烧瓶微服务方案。

enter image description here

Activity-server公开了用于购票的api。 付款完成后,A-server将带有order_id(no)的消息发送到Rabbitmq。
并且C-serverorder_no插入到mysql中,因为它收到了特定的消息。

我的解决方案是启动一个pika线程,而且似乎可行。

# content of /user/src/app.py
def create_app(config=None):
    app = Flask(__name__)
    t = Thread(target=start_message_consumer)
    t.daemon = True
    t.start()

    return app

def start_message_consumer():
    credential = pika.credentials.PlainCredentials(xxxxx)
    connection = pika.BlockingConnection(xxx, credentials=credential))
    channel = connection.channel()

    channel.queue_declare(queue='order')

    def callback(ch, method, properties, body):
        ....Insert statement

    channel.basic_consume(callback, queue='order', no_ack=True)
    channel.start_consuming()
  

我是否需要在某个地方加锁?是否有更好的方法(例如烧瓶扩展)来实现这一目标?

0 个答案:

没有答案