rabbitmq сохраняет запрос после остановки процессов и очереди rabitmq - PullRequest
0 голосов
/ 22 декабря 2018

Я создаю приложение connectxion с rabbitmq, оно работает нормально, но когда я останавливаю процесс rabbitmq, все мои запросы теряются, я хочу, чтобы даже после уничтожения службы rabitmq мои запросы сохранялись, а после перезапуска службы rabitmq все мои запросы возвращалисьна свои места.вот мой rabitmq.py:

import pika
import SimilarURLs


data = ''

connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()


def rabit_mq_start(Parametter):
    channel.queue_declare(queue='req')
    a = (take(datas=Parametter.decode()))
    channel.basic_publish(exchange='',
                          routing_key='req',
                          body=str(a))
    print(" [x] Sent {}".format(a))
    return a


channel.start_consuming()


def take(datas):
    returns = SimilarURLs.start(data=datas)
    return returns

Кроме того, я прошу прощения за ошибки в моем вопросе.

1 Ответ

0 голосов
/ 22 декабря 2018

Вам необходимо включить подтверждение издателя (с помощью метода confirm_delivery для вашего объекта channel).Затем ваше приложение должно отслеживать, какие сообщения были подтверждены как опубликованные, а какие нет.Вам придется реализовать это самостоятельно.Когда RabbitMQ останавливается и запускается снова, ваше приложение может повторно публиковать сообщения, которые не были подтверждены.

Было бы лучше использовать пример асинхронного издателя в качестве руководства.Если вы используете BlockingConnection, вы не будете получать асинхронные уведомления при подтверждении сообщения, игнорируя их цель.

Если вам понадобится дополнительная помощь после того, как вы попытаетесь реализовать это самостоятельно, я предлагаю продолжить работу по pika-python список рассылки.


ПРИМЕЧАНИЕ: команда RabbitMQ отслеживает список rabbitmq-users и только иногда отвечает на вопросына StackOverflow.

...