Вот мой сценарий микросервисов фляги.
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()
Нужны ли где-нибудь блокировки или есть лучший подход (например, расширение колбы) для достижения этого?