Пример использования Yandex Message Queue на Python
Статья создана
Обновлена 4 октября 2024 г.
Важно
Для работы с Yandex Message Queue из Python используется boto3
Установка
Для установки воспользуйтесь инструкциями в репозитории разработчика: boto3
Подготовка к работе
- Создайте сервисный аккаунт.
- Назначьте роль editor сервисному аккаунту.
- Создайте статический ключ доступа.
Задайте переменные окружения:
export AWS_ACCESS_KEY_ID="<идентификатор_ключа_доступа>"
export AWS_SECRET_ACCESS_KEY="<секретный_ключ>"
Пример
В этом примере:
- Устанавливается соединение с Message Queue.
- Создается очередь с именем
mq_example_boto3
. - В очередь передается сообщение с текстом
boto3 sample message
. - Сообщение считывается из очереди и отображается в терминале.
- Полученное сообщение удаляется из очереди.
- Удаляется созданная очередь сообщений.
import boto3
def main():
# Create client
client = boto3.client(
service_name='sqs',
endpoint_url='https://message-queue.api.cloud.yandex.net',
region_name='ru-central1'
)
# Create queue and get its url
queue_url = client.create_queue(QueueName='mq_example_boto3').get('QueueUrl')
print('Created queue url is "{}"'.format(queue_url))
# Send message to queue
client.send_message(
QueueUrl=queue_url,
MessageBody='boto3 sample message'
)
print('Successfully sent test message to queue')
# Receive sent message
messages = client.receive_message(
QueueUrl=queue_url,
MaxNumberOfMessages=10,
VisibilityTimeout=60,
WaitTimeSeconds=20
).get('Messages')
for msg in messages:
print('Received message: "{}"'.format(msg.get('Body')))
# Delete processed messages
for msg in messages:
client.delete_message(
QueueUrl=queue_url,
ReceiptHandle=msg.get('ReceiptHandle')
)
print('Successfully deleted message by receipt handle "{}"'.format(msg.get('ReceiptHandle')))
# Delete queue
client.delete_queue(QueueUrl=queue_url)
print('Successfully deleted queue')
if __name__ == '__main__':
main()