Docker开启RabbitMQ延时消息队列

前言

经常在开发中会遇到一些不需要同步执行的业务,那我们就需要用到消息队列来进行异步执行,但是对于某些业务就还需要用到延时的功能,比如订单支付超时关闭,那么这个时候我们就需要开启消息队列的延时功能,当然也有朋友说有其他的解决办法,例如:数据库轮训以及线程休眠,但是这些相对于延时消息队列来说,都显得比较逊色。
Docker开启RabbitMQ延时消息队列

正文

安装Docker

docker的安装就不用多说了,在Centos下就一行命令搞定(其他的系统版本请自行查阅):

拉取RabbitMQ镜像并启动

上述命令中的RABBITMQ_DEFAULT_USER为默认用户,RABBITMQ_DEFAULT_PASS为默认密码,请自行修改即可

安装延时插件

首先先到rabbitmq官网下载自己rabbitmq对应版本的延时插件rabbitmq_delayed_message_exchange到服务端,我的是3.7.x,所以执行:

下载完成之后我们将zip文件进行解压,然后我们执行docker ps查看自己的rabbitmq的容器ID:

接着我们将插件拷贝到容器的插件目录下:

然后我们进入到容器的bash中:

进入到plugins目录查看是否有rabbitmq_delayed_message_exchange-20171201-3.7.x.ez文件,有的话就说明成功拷贝到rabbitmq的插件目录了,接着我们就执行最后一步,开启插件:

执行rabbitmq-plugins enable rabbitmq_delayed_message_exchange在log最后出现started 1 plugins.,就说明开启成功,退出rabbitmq的bash之后执行docker restart rabbit重启rabbitmq就可以使用延时消息队列来处理业务了。

后记

在以前的业务中我都是用的文章开头说的稍显逊色的做法来处理这种业务,但是这种方法显然是不可靠的,当然以前我不用消息队列的原因就是听着这个名字就觉得很难,后来真正用上了之后发现很好上手的,所以不能再事情未开始之前就给自己下了死刑,加油! :smile:

    A+
所属分类:代码编程

发表评论

请在下方填写评论信息

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen:

表情 粗体 斜体 图片 引用 链接 删除线 下划线 插代码 签到

目前评论:12   其中:访客  7   博主  5

  1. avatar 9999 0  来自天朝的朋友 谷歌浏览器 Windows 7 山东省淄博市 联通

    很优秀啊,能增加网址就完美了

  2. avatar 搬瓦工 2  来自天朝的朋友 谷歌浏览器 Windows 8.1 江苏省苏州市 电信

    交换链接吗

    • avatar 憧憬Licoy 博主  来自天朝的朋友 谷歌浏览器 Mac OS X 10_14_4 四川省成都市 移动

      @搬瓦工 可以

      • avatar 搬瓦工 2  来自天朝的朋友 谷歌浏览器 Windows 8.1 江苏省苏州市吴中区 电信

        @憧憬Licoy 已加贵站链接
        我站:https://www.banwagong.me/ (搬瓦工)

        • avatar 憧憬Licoy 博主  来自天朝的朋友 谷歌浏览器 Mac OS X 10_14_4 四川省成都市 移动

          @搬瓦工 已添加至友链内页,缓存刷新后可见

      • avatar 搬瓦工 2  来自天朝的朋友 谷歌浏览器 Windows 8.1 江苏省苏州市 电信

        @憧憬Licoy 能否放至首页,不行的话就撤了吧。

  3. avatar cjd 1  来自天朝的朋友 谷歌浏览器 Windows 7 广西玉林市 电信

    电商专用快递网站www.dh5u.com单号无忧

  4. avatar 头条 1  来自天朝的朋友 谷歌浏览器 Windows 7 广西贺州市 联通

    文章不错非常喜欢

  5. avatar repostone 1  来自天朝的朋友 谷歌浏览器 Windows 8.1 北京市 移动

    非技术的路过。