Как прослушать очередь сообщений в флеш-микросервисах? - PullRequest
0 голосов
/ 23 декабря 2018

Вот мой сценарий микросервисов фляги.

enter image description here

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()

Нужны ли где-нибудь блокировки или есть лучший подход (например, расширение колбы) для достижения этого?

...