这是我的烧瓶微服务方案。
Activity-server
公开了用于购票的api。
付款完成后,A-server
将带有order_id(no)
的消息发送到Rabbitmq。
并且C-server
将order_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()
我是否需要在某个地方加锁?是否有更好的方法(例如烧瓶扩展)来实现这一目标?