предисловие
В разработке мы часто сталкиваемся с некоторыми бизнесами, которые не нужно выполнять синхронно, поэтому нам нужно использовать очереди сообщений для асинхронного выполнения, но для некоторых бизнесов нам также необходимо использовать отложенные функции, такие как закрытие тайм-аута оплаты заказа, затем At на этот раз нам нужно включить функцию задержки очереди сообщений.Конечно, некоторые друзья сказали, что есть и другие решения, такие как ротация базы данных и спящий режим потока, но они относительно уступают отложенной очереди сообщений.
текст
Установить Докер
Излишне говорить, что установка докера может быть выполнена одной строкой команд под Centos (пожалуйста, проверьте наличие других версий системы самостоятельно):
yum update -y && yum install -y docker && service docker start
Извлеките образ RabbitMQ и запустите
docker pull rabbitmq:managementdocker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management
RABBITMQ_DEFAULT_USER
пользователь по умолчанию,RABBITMQ_DEFAULT_PASS
Это пароль по умолчанию, пожалуйста, измените его самостоятельноУстановите плагин задержки
первый пришел первыйофициальный сайт rabbitmqЗагрузите соответствующую версию плагина задержки для rabbitmq.rabbitmq_delayed_message_exchange
Для сервера у меня 3.7.x, поэтому выполните:
wget https://dl.bintray.com/rabbitmq/community-plugins/3.7.x/rabbitmq_delayed_message_exchange/rabbitmq_delayed_message_exchange-20171201-3.7.x.zip
После завершения загрузки мы разархивируем zip-файл, а затем выполняемdocker ps
Проверьте идентификатор контейнера вашего собственного rabbitmq:
[root@121 download]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESc5e3d04e3141 rabbitmq:management "docker-entrypoint..." 7 days ago Up 7 days 4369/tcp, 0.0.0.0:1883->1883/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 0.0.0.0:15672->15672/tcp, 0.0.0.0:25672->25672/tcp, 0.0.0.0:61613->61613/tcp, 15671/tcp rabbit
Затем мы копируем плагин в каталог плагинов контейнера:
docker cp rabbitmq_delayed_message_exchange-20171201-3.7.x.ez c5e3d04e3141:/plugins# c5e3d04e3141是自己的容器ID
Затем входим в баш контейнера:
sudo docker exec -it c5e3d04e3141 /bin/bash
Войтиplugins
Каталог, чтобы узнать, есть лиrabbitmq_delayed_message_exchange-20171201-3.7.x.ez
Если есть какой-либо файл, значит, он успешно скопирован в директорию плагинов rabbitmq. Затем мы выполняем последний шаг, чтобы открыть плагин:
root@my-rabbit:/plugins# rabbitmq-plugins enable rabbitmq_delayed_message_exchangeEnabling plugins on node rabbit@my-rabbit:rabbitmq_delayed_message_exchangeThe following plugins have been configured:rabbitmq_delayed_message_exchangerabbitmq_managementrabbitmq_management_agentrabbitmq_web_dispatchApplying plugin configuration to rabbit@my-rabbit...The following plugins have been enabled:rabbitmq_delayed_message_exchangestarted 1 plugins.
воплощать в жизньrabbitmq-plugins enable rabbitmq_delayed_message_exchange
Появляется в конце журналаstarted 1 plugins.
, значит открытие прошло успешно, и выполнить после выхода из баша rabbitmqdocker restart rabbit
Перезапуск Rabbitmq может использовать очередь сообщений о задержке для управления бизнесом.
постскриптум
В предыдущем бизнесе я использовал немного худший метод, упомянутый в начале статьи, чтобы иметь дело с этим видом бизнеса, но этот метод явно ненадежен.Конечно, причина, по которой я не использовал очереди сообщений раньше, заключалась в том, что я слышал название. Это очень сложно. Позже, после того, как я на самом деле использовал его, я обнаружил, что его очень легко использовать, поэтому я не могу дать себе смертную казнь до того, как все начнется. Давай!
Оригинальная ссылка:www.licoy.cn/3361.html