Является ли функция обратного вызова в RabbitMQ, pika basic_consume выполняется в режиме блокировки (один за другим)? - PullRequest
0 голосов
/ 01 сентября 2018

Я очень новичок в RabbitMQ, поэтому я проверял учебник (http://www.rabbitmq.com/tutorials/tutorial-one-python.html) В этом учебнике мы используем функцию basic_consume канала pika для приема сообщений.

Как говорится в документации по basic_consume (https://pika.readthedocs.io/en/0.10.0/modules/channel.html)), она, очевидно, потребляет сообщение, но мой вопрос в том, каким образом выполняется функция обратного вызова?

В следующей части урока (http://www.rabbitmq.com/tutorials/tutorial-two-python.html) мы можем проверить, что один поток не может вызывать две функции обратного вызова одновременно (поскольку мы запускаем пример кода, спящие сообщения появляются по одному на поток.) ​​Но это не гарантируется в любая из документации (как я нашел.)

То, что я хочу, точно так же (для одного потока вызывается только одна функция обратного вызова, сообщения обрабатываются одна за другой), но я хочу убедиться, что basic_consume работает именно так. Я также думаю, что это очевидно (потому что нам нужно многопоточность для одновременной обработки нескольких функций обратного вызова), но я все еще немного сбит с толку ...

Спасибо!

1 Ответ

0 голосов
/ 04 сентября 2018

Да, обратный вызов для basic_consume будет вызываться по одному сообщению за раз в потоке, который регистрирует обратный вызов. Пожалуйста, убедитесь, что вы используете Pika 0.12.0 и посмотрите пример кода .

...