Рубрики
Без рубрики

Как опубликовать сообщение с приоритетом в rabbitmq

Эта статья описывает, как публиковать и потреблять сообщения с приоритетом в rabbitmq. Теги с Python, rabbitmq.

Зависимости

  • Rabbitmq.5.0)
  • Python 3.6.
  • Пика

В этой статье мы узнаем, как публиковать и потреблять сообщения с приоритетом в rabbitmq. Мы будем использовать язык Python Language и Pika для AMQP.

Здесь мы объявляем очередь с X-MAX-приоритет аргумент Этот аргумент является целочисленным числом от 0 до 255. Он описывает, что очередь может принимать сообщения с максимальным приоритетом, равным этому номеру.

import pika

queue_name = 'priority-queue'
max_priority = 10

# connect and get channel
parameters = pika.ConnectionParameters('localhost')
connection = pika.BlockingConnection(parameters)
channel = connection.channel()
# declare queue with max priority
channel.queue_declare(
    queue=queue_name, arguments={"x-max-priority": max_priority}
)

Публиковать сообщения с разными приоритетами.

def publish(message, priority)
    message = message + str(priority)
    channel.basic_publish(
        properties=pika.BasicProperties(priority=priority),
        exchange='',
        routing_key=queue_name,
        body=message
    )
# message with priority 0
message = 'message-with-priority-'
publish(message, 0)
# message with priority 5
publish(message, 5)

Теперь потребляйте сообщения из очереди и найдите, что сообщение с более высоким приоритетом будет сначала потреблять, даже если он был опубликован позже.

method_frame, header_frame, body = channel.basic_get(queue_name)
print(body)
# message-with-priority-5
method_frame, header_frame, body = channel.basic_get(queue_name)
print(body)
# message-with-priority-0

Исходный код: rabbitmq-приоритет-очередь -пример

Оригинал: “https://dev.to/hardiksondagar/how-to-publish-message-with-priority-in-rabbitmq-1jd6”