织梦大气婚纱影楼网站源码,高端大气上档次的网站模板,网站备案的具体流程,机关网站建设建议前言经常在开发中会遇到一些不需要同步执行的业务#xff0c;那我们就需要用到消息队列来进行异步执行#xff0c;但是对于某些业务就还需要用到延时的功能#xff0c;比如订单支付超时关闭#xff0c;那么这个时候我们就需要开启消息队列的延时功能#xff0c;当然也有朋…前言经常在开发中会遇到一些不需要同步执行的业务那我们就需要用到消息队列来进行异步执行但是对于某些业务就还需要用到延时的功能比如订单支付超时关闭那么这个时候我们就需要开启消息队列的延时功能当然也有朋友说有其他的解决办法例如数据库轮训以及线程休眠但是这些相对于延时消息队列来说都显得比较逊色。正文安装Dockerdocker的安装就不用多说了在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_USERadmin -e RABBITMQ_DEFAULT_PASS123456 -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的容器ID[root121 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然后我们进入到容器的bash中sudo docker exec -it c5e3d04e3141 /bin/bash进入到plugins目录查看是否有rabbitmq_delayed_message_exchange-20171201-3.7.x.ez文件有的话就说明成功拷贝到rabbitmq的插件目录了接着我们就执行最后一步开启插件rootmy-rabbit:/plugins# rabbitmq-plugins enable rabbitmq_delayed_message_exchangeEnabling plugins on node rabbitmy-rabbit:rabbitmq_delayed_message_exchangeThe following plugins have been configured:rabbitmq_delayed_message_exchangerabbitmq_managementrabbitmq_management_agentrabbitmq_web_dispatchApplying plugin configuration to rabbitmy-rabbit...The following plugins have been enabled:rabbitmq_delayed_message_exchangestarted 1 plugins.执行rabbitmq-plugins enable rabbitmq_delayed_message_exchange在log最后出现started 1 plugins.就说明开启成功退出rabbitmq的bash之后执行docker restart rabbit重启rabbitmq就可以使用延时消息队列来处理业务了。后记在以前的业务中我都是用的文章开头说的稍显逊色的做法来处理这种业务但是这种方法显然是不可靠的当然以前我不用消息队列的原因就是听着这个名字就觉得很难后来真正用上了之后发现很好上手的所以不能再事情未开始之前就给自己下了死刑加油